【问题标题】:"Lost connection to MySQL server during query" kills Windows Service“查询期间丢失与 MySQL 服务器的连接”杀死 Windows 服务
【发布时间】:2011-01-05 16:57:20
【问题描述】:

我使用 Delphi 2007 开发了一个 Windows 服务。它使用 TAdoConnection 和 TAdoQuery 通过 Internet 连接到远程 MySql 数据库。我为 CommandTimeout 属性保留了 30 秒的默认值。我还在每个新查询上创建连接/查询对象并在完成后释放它们(即我不在启动时创建数据库连接并保持打开状态)。

服务每隔一段时间就会停止,事件查看器会显示“在查询期间丢失与 MySQL 服务器的连接”。我将所有内容都包含在异常中。我的怀疑是查询执行时网络出现了下降。

有人有任何解决方案/想法吗?

什么触发窗口关闭服务?

另外,我将服务“Recovery”设置为重新启动服务,但这从未发生过。

我的下一步是在每个查询开始时开始记录,并将其与关闭的日期/时间进行比较。因为到目前为止我不知道这是如何记录的。

【问题讨论】:

  • 您需要记录每个查询并添加一个全局异常处理程序,也包括日志记录。

标签: mysql delphi


【解决方案1】:

这可能不是一个直接的答案,但我前几天也遇到了同样的问题,我在本地服务器上有 mysql,我使用Mydac 组件连接。

经过多次尝试,我发现问题出在一个有 BLOB 字段的表上,我尝试像这样在表上查询

从表中选择 *

在查询获取大约 1600 行后我遇到了这个问题,经过几次检查后,我发现问题来自很少的记录,而且似乎它们已损坏。所以当我像这样查询时

从我没有 id 的表中选择 * 1599 年到 1650 年之间

我遇到了这个问题,如果我从他们的查询中删除了Not,它只获取了 51 条记录,我得到了错误,这意味着有一些记录已损坏,我也做了 mysqlcheck,但它没有解决问题,我尝试了其他一些检查工具,我得到了相同的结果,我没有尝试删除这些记录,因为我想知道为什么会出现这个问题,但是我正忙于其他事情所以我离开了服务器一段时间。

顺便说一句,我使用 MySql Query 浏览器尝试进行查询,因为其他工具会给我错误,而不会显示在 mysql 实例意外终止之前获取了多少条记录。

【讨论】:

  • 我过去也遇到过这种情况。但我很遗憾地说它不相关。这是一个非常简单的表格(虽然有一个备忘录)。而且我知道这不是因为一遍又一遍地获取相同的记录。
猜你喜欢
  • 2015-09-22
  • 1970-01-01
  • 2012-11-15
  • 2020-07-11
  • 2020-12-05
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多