【发布时间】:2019-05-28 19:09:03
【问题描述】:
在不同硬件(如装有 Windows 操作系统的笔记本电脑)中多次使用 MySQL 服务器后,在极少数情况下数据会回滚到以前的事务。该算法通常在具有不同客户端的数千个事务中运行良好,但是当关闭应用程序并释放内存时,最后 4 或 10 个事务的数据回滚时,0.01% 的情况下会发生一些事情。该应用程序是桌面应用程序,是使用 .net 和 MySQL 库以及 localhost 站中的 mariadb 10.2 免费版开发的。如果提交失败,则重试。是否有可能某些交易在出错后部分保存数据并且交易没有很好地关闭?提交失败的原因是什么???,或者硬盘故障,或者 Windows 问题。 ???。 如果报告显示数据,则提交正在工作,但在关闭应用程序数据回滚的情况下?为什么 ??? 任何帮助将不胜感激。
【问题讨论】:
-
我会在代码本身中插入一个日志记录操作,以首先报告提交中的任何错误并重试,即使它成功也是如此。这将创建一个不会显示您的问题是否发生的模式。日志记录操作显示包含的信息可帮助您确定这一切发生的原因、时间和用户,操作系统和计算机
-
我在使用 COM 模块时看到过类似的问题。当模块没有正确发布时,它所使用的文件很可能是不完整的(未完全保存)。这是错误的用途。应用程序未能调用“关闭”(C# 术语中的 Dispose) 函数。这是由于不正确的应用程序结束 (例如,当用户在工作进行时按下“X”(关闭)按钮时)。这是一个难以跟踪的问题,但请尝试搜索所有“退出路径”以检查所有模块的正确处置。