首页 > 代码库 > Ibatis.Net执行Sql超时commandTimeout的一个坑
Ibatis.Net执行Sql超时commandTimeout的一个坑
项目中使用了Ibatis.Net,数据库是Mysql,在做一个批量Update的操作时,需要执行40几秒,在执行到30秒的时候,会抛出异常:Timeout expired , The timeout period elapsed prior to completion of the operation or the server is not responding
网上一查,说设置mysql的command timeout,于是在Ibatis.Net的providers.config文件里设置了commandTimeout="600" 参数。
结果一测试,还是报错,一样的异常。。。
没办法了,只能跟踪一下Ibatis.Net的源码,终于发现了SqlMapSession.CreateCommand这个方法里有个坑。。。就是把_connection.ConnectionTimeout赋值给了command.CommandTimeout。。。
这上面竟然还注释着 MySql provider doesn‘t support it !
还好,找到了原因,就能解决,在MySql的连接字符串上加上
Connect Timeout=600
这样Ibatis.Net就会把它赋值给command.CommandTimeout
测试不再报错了,ok问题解决
Ibatis.Net执行Sql超时commandTimeout的一个坑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。