请教ThinkPHP为啥会这么容易数据库查询超时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教ThinkPHP为啥会这么容易数据库查询超时相关的知识,希望对你有一定的参考价值。
参考技术A 这个提示有时候你需要回收一下。 给你几个可能性吧: 首先你做一个调试方法: 做一下异常处理try catch finally 然后解决方案: 1、把conn.close()关一下,或conn.dispose()就行了。 2、dr要记得随时关了。 3为啥@jdbc 查询因连接超时而失败?
【中文标题】为啥@jdbc 查询因连接超时而失败?【英文标题】:Why @jdbc query fails with connection timeout?为什么@jdbc 查询因连接超时而失败? 【发布时间】:2016-03-07 22:07:09 【问题描述】:这是我在 DB2 表中插入行的代码:
for(i=0; i<1000000; i++)
var myData =
USERNAME: "user1",
SOMEID: i
;
@JdbcInsert("db2", "MYTABLE", myData);
在某些时候它会因为这个错误而失败:
Error while executing JavaScript action expression
Script interpreter error, line=211, col=22: Error while executing function '@JdbcInsert'
Error while creating connection
Time expired getting a connection (=10000 ms). Try again.
我发现没有办法控制 JDBC 驱动程序超时。我错了吗? 或者我应该放类似的东西
java.lang.Thread.sleep(1000);
在每个@JdbcInsert 语句之前?
【问题讨论】:
我认为你可以更改服务器超时时间。 但是,10 秒应该足以创建连接,在大多数情况下应该会快得多。 【参考方案1】:为什么添加Thread.sleep(1000)
可以解决您的问题?这里的问题是您希望将 1,000,000 条记录插入到 DB2 中,连接超时为 10 秒。
您需要:A) 增加连接超时时间或 B) 一次插入更少的记录(即插入 10k 或 100k 条记录然后获得新连接)
显然 A 听起来是这里最好的解决方案,因为 B 只是增加了获得额外连接的更多开销。
【讨论】:
我没有建立任何连接。只有一个 JavaScript 命令 @Jdbcinsert 可以插入一条记录。它不是纯 Java,您可以控制一切。如果我可以一次插入多条记录,问题将得到解决。但是这个问题仍然悬而未决***.com/questions/23768736/… 对,如果您使用选项 B,您将不得不使用除@Jdbcinsert
之外的其他机制(即更细粒度的东西,实际上允许您控制连接)【参考方案2】:
.jdbc 文件有超时参数。请参阅 Ext Lib 书 https://books.google.com/books?id=4DIXQKQNoSQC&pg=PA408&lpg=PA408&dq=xpages+jdbc+file+timeout&source=bl&ots=YJXuvWUJf0&sig=1bD_chX0IkEtSPvkfaSfZqJlSvk&hl=en&sa=X&ved=0ahUKEwjsvI7cobHLAhUG92MKHcmNBCUQ6AEILTAD#v=onepage&q=xpages%20jdbc%20file%20timeout&f=false
【讨论】:
以上是关于请教ThinkPHP为啥会这么容易数据库查询超时的主要内容,如果未能解决你的问题,请参考以下文章
mysql数据库链接不稳定,每隔几分钟就会出现链接不上的问题,最大连接数也修改了,还是没用,请教高手!