Ibatis.Net執行Sql超時commandTimeout的一個坑

divc12080發表於2014-10-16

專案中使用了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問題解決

轉載於:https://www.cnblogs.com/lookup/p/ibatis_net_commandtimeout.html

相關文章