【问题标题】:C# MySQL Wait TimeoutC# MySQL 等待超时
【发布时间】:2020-09-29 14:58:41
【问题描述】:

我目前正在我的 vs 2017 项目中使用 mysql 连接,我需要检查 wait_timeout 是否超过。不幸的是,超时后连接状态仍然显示为打开。有没有办法在没有 try catch 的情况下进行检查(在我的情况下,try catch 不会捕获抛出的异常)?

【问题讨论】:

  • 您要检查什么?
  • 我需要检查wait_timeout是否超过

标签: c# mysql timeout


【解决方案1】:

当超过wait_timeout 时,MySQL 服务器简单地关闭连接。不会向客户端“推送”已发生这种情况的通知,因此连接状态不会改变;这只能通过尝试从底层 TCP 套接字读取来检测。 (有关这方面的深入技术文章,请参阅https://github.blog/2020-05-20-three-bugs-in-the-go-mysql-driver/。)对该连接的任何后续使用通常都会引发异常。

有一种方法可以在不抛出异常的情况下测试连接:调用MySqlConnection.Ping;如果连接关闭,它将返回false

【讨论】:

  • 谢谢,遗憾的是,MySqlConnection.Ping 在我的情况下抛出了这个异常“System.Net.Sockets.SocketException: 'An established connection was aborted by the software in your host'”
  • 那只是因为你在调试器中打破了异常;见stackoverflow.com/questions/62302876/…。在常规使用中不应从Ping 抛出异常。
猜你喜欢
  • 2011-01-07
  • 2017-12-26
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多