我使用Delphi 2007开发了一个Windows服务。它使用TAdoConnection和TAdoQuery通过互联网连接到远程MySql数据库。我为 CommandTimeout 属性保留了默认值30秒。我还在每个新查询上创建连接/查询对象,并在完成后释放它们(即我在启动时不创建数据库连接并保持打开状态)。
每隔一段时间服务停止,事件查看器显示“在查询期间丢失与MySQL服务器的连接”。我把一切都包裹在例外中。我怀疑是在查询执行时网络出现了下降。
任何人都有任何决议/想法吗?
什么触发Windows关闭服务?
此外,我将服务“恢复”设置为重新启动服务,但这种情况从未发生过。
我的下一步是在每个查询开始时开始记录,并将其与关闭的日期/时间进行比较。因为截至目前我不知道这是如何记录的。
答案 0 :(得分:0)
这可能不是直接的答案,但我前几天遇到了同样的问题,我在本地服务器上安装了mysql,并使用Mydac组件进行连接。
经过多次尝试,我发现问题来自一个有BLOB字段的表,我试图在表上查询
从表格中选择*
我在查询获取大约1600行之后遇到了这个问题,经过几次检查后我发现问题来自于几条记录,似乎它们已损坏。所以当我像
那样查询时从我的表中选择*,其中id不是 在1599年至1650年之间
我有这个问题,如果我从查询中删除了Not
哪个只获取了51条记录我得到了错误,这意味着有些记录已损坏,我也做了mysqlcheck但是它没有解决问题,我尝试了一些其他检查工具,我得到了相同的结果,我没有尝试删除这些记录,因为我需要为什么会出现这个问题,但我忙于其他事情,所以我离开了服务器一段时间。
BTW,我使用MySql Query浏览器尝试进行查询,因为其他工具会在没有显示mysql实例意外终止之前获取的记录数的情况下给出错误。