我有一个应用程序,在MySQL独立服务器上运行显式的MySQL查询。
COMMIT;在绝大多数情况下,查询的工作方式与预期一样,但有时查询似乎成功,但同时似乎没有将事务提交到DB。
因此,我在深入研究COMMIT查询可能失败的可能性。我发现了类似的问题:https://stackoverflow.com/questions/3960189/can-a-commit-statement-in-sql-ever-fail-how
但在官方的MySQL文档上,从来没有提到COMMIT可能会失败。
我想了解提交查询在哪些情况下可能会失败,以及如何复制它,可能会得到官方文档页的支持。
发布于 2021-07-26 07:26:21
问题不在COMMIT查询上,问题是在该事务处理期间会发生implicit回滚。
正如文档所述,如果事务期间发生了死锁发生,则可能发生这种情况。
发布于 2021-02-02 18:55:21
这完全取决于您如何设置事务。
如果START TRANSACTION和COMMIT;围绕着一系列INSERT、UPDATE和DELETE查询,那么有一些命令会触发隐式提交:
BEGIN或START TRANSACTION)START TRANSACTION或BEGIN)我以前在DBA StackExchange中提到过这一点。
Mar 06, 2018:您能否回滚状态为“将alter提交到存储引擎”的查询Aug 21, 2015:用于MySQL的事务性DDL工作流Feb 12, 2014:酸性事务中的行锁定Mar 15, 2013:MySQL备份InnoDB你可以看到触发MySQL5.7文档中隐式提交的最新命令列表。为什么考虑隐式提交?数据可能与其他数据脱离上下文太快或太晚。
除了这些命令之外,终止DB连接将隐式回滚事务。您应该监视状态变量已中止_接驳和已中止_客户端,以查看DB连接在输入或会话时是否失败。
https://dba.stackexchange.com/questions/284526
复制相似问题