✅ 什么是数据库句柄?
数据库句柄就是指程序中表示数据库连接的对象或资源,比如:
- Java 中的
Connection conn = DriverManager.getConnection(...) - 使用连接池时(HikariCP、Druid、C3P0)获取到的连接句柄
- Spring 框架中自动注入的
DataSource获取的连接
🔍 数据库句柄相关的问题会导致哪些情况?
1. 连接未成功建立
- 如果连接没成功,句柄就是
null或无效,会报NullPointerException或连接失败类错误。
2. 连接超时/被关闭
- 连接池回收连接后你仍然使用,会报 “connection is closed”。
- 数据库断开后尝试复用连接句柄,也会报错。
3. 连接泄漏
- 长时间不关闭连接导致连接耗尽,新线程无法获取连接。
- 尤其是在异常路径中未调用
conn.close()。
4. 连接对象失效导致查询/更新失败
-
类似你遇到的:
复制编辑 org.springframework.dao.DataIntegrityViolationException有时是因句柄在内部失效或不完整读取数据造成的。
5. 数据库字段类型转换失败
-
连接句柄关联的数据库类型和程序中的映射字段不一致,例如:
- 数据库字段是
BIGINT,程序尝试以Timestamp读取。 - 连接配置未正确设置字符集或时区,造成解析失败。
- 数据库字段是