首页 > 解决方案 > 为什么 MySQL mariadb 无故回滚数据?

问题描述

在具有 Windows 操作系统的笔记本电脑等不同硬件中多次使用 MySQL 服务器后,在极少数情况下,数据会回滚到以前的事务。该算法通常在具有不同客户端的数千个事务中运行良好,但是当关闭应用程序并释放内存时,最后 4 或 10 个事务的数据回滚时,0.01% 的情况下会发生一些事情。该应用程序是桌面应用程序,是使用 .net 和 MySQL 库以及 localhost 站中的 mariadb 10.2 免费版开发的。如果提交失败,则重试。是否有可能某些交易在出错后部分保存数据并且交易没有很好地关闭?提交失败的原因是什么???,或者硬盘故障,或者 Windows 问题。???。如果报告显示数据,则提交正在工作,但在关闭应用程序数据回滚的情况下?为什么 ???任何帮助将不胜感激。

标签: mysqlsqlmariadbcommit

解决方案


看似随机的原因有很多ROLLBACKs

在事务中的每个语句之后以及COMMIT. (提交错误可能只发生在基于 Galera 的集群和组复制中。但无论如何都要测试。)

发生错误时,尝试捕获SHOW ENGINE INNODB STATUS;. 打开innodb_print_all_deadlocks,然后查看日志。

同时,您能描述一下这笔交易吗?更好的是,向我们展示所涉及的 SQL。


推荐阅读