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問題解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM