[bug]Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

写在前面

在mysql中这个异常是非常常见的,超时分为连接超时和执行超时,而连接超时,大部分原因是网络问题,或客户端到服务端的端口问题造成。

bug场景

有的时候,使用MySqlDataReader在读取数据的时候,datareader的特性是在在线读取,而且是一条一条往下读,也就是只进式读取。如果数据非常多,就会造成超时的问题。

这种超时是执行超时引起的。

SqlCommand.CommandTimeout

获取或设置在终止执行命令的尝试并生成错误之前的等待时间。

等待命令执行的时间(以秒为单位)。默认为 30 秒。

SqlConnection.ConnectionTimeout

获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。

等待连接打开的时间(以秒为单位)。默认值为 15 秒。

解决办法,要么换种ExecuteDataTable或者修改执行超时时间。

原文地址:https://www.cnblogs.com/wolf-sun/p/4687227.html