[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或者修改执行超时时间。

posted @   wolfy  阅读(772)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2014-07-29 [EF]使用EF简单增删改查
点击右上角即可分享
微信分享提示