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