我在 Struts 2 中有一个应用程序,它连接到 MySQL 数据库,我正在使用DBConnectionBroker
数据库池 -
在插入操作后执行选择时,我遇到了如下奇怪的问题 -
我在表中插入并选择一条记录(在主键 id 上)并收到一条成功消息,但在执行刷新之前不会显示结果。
当我成功更新记录时,不会反映当前更改,而是显示以前的值。
多次刷新每次都显示不同的值(即旧的和新的变化)
以下是我创建的 logs.log 文件详细信息DBConnectionBroker
:
==================================================== ============================= 启动 DbConnectionBroker 版本 1.0.13:
dbDriver = com.mysql.jdbc.Driver
dbServer = jdbc:mysql://localhost:3306/dev01?profileSQL=true
dbLogin = esmdev
日志文件 = c:\DBlogs.log
最小连接数 = 1
最大连接数 = 20
总刷新间隔 = 1.0 天
日志附加 = 假
maxCheckoutSeconds = 60
调试级别 = 2
IST 2013 年 8 月 21 日星期三 20:45:51 打开连接 0 com.mysql.jdbc.JDBC4Connection@1ff5c98:
IST 2013 年 8 月 21 日星期三 20:45:52 打开连接 1 com.mysql.jdbc.JDBC4Connection@a6e0a9:
-----> 连接用尽!将在循环 1 中等待并重试
==================================================== ===============================
我通过在我的 dburl 上设置 profileSQL=true 进行的初始调试/分析在我的 Eclipse IDE 控制台中显示以下日志
==================================================== ============================= 持续时间:1 毫秒,连接 ID:29,语句 ID:14,结果集 ID: 16
持续时间:2 毫秒,连接 ID:28,语句 ID:15,结果集 ID:17
==================================================== ==============================
我发现这里有趣的部分是 connection-id - 对于同一个查询,我可以看到两个不同的 ID(最小连接为 1),但结果集不同。
当我在调试模式下启动 tomcat 并设置断点以观察其上方的少数对象时,我还观察到一件事,这会导致一些延迟/减慢执行速度,并且只显示一个连接 ID,并且由于延迟,一切似乎都可以正常工作。
尽管我在执行查询后释放了连接,但我对为什么创建新连接感到困惑。