首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致MySQL提交查询失败的条件?

问导致MySQL提交查询失败的条件?
EN

Database Administration用户
提问于 2021-02-02 16:30:10
回答 2查看 1.3K关注 0票数 2

我有一个应用程序,在MySQL独立服务器上运行显式的MySQL查询。

代码语言:javascript
复制
COMMIT;

在绝大多数情况下,查询的工作方式与预期一样,但有时查询似乎成功,但同时似乎没有将事务提交到DB。

因此,我在深入研究COMMIT查询可能失败的可能性。我发现了类似的问题:https://stackoverflow.com/questions/3960189/can-a-commit-statement-in-sql-ever-fail-how

但在官方的MySQL文档上,从来没有提到COMMIT可能会失败。

我想了解提交查询在哪些情况下可能会失败,以及如何复制它,可能会得到官方文档页的支持。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2021-07-26 07:26:21

问题不在COMMIT查询上,问题是在该事务处理期间会发生implicit回滚。

正如文档所述,如果事务期间发生了死锁发生,则可能发生这种情况。

票数 0
EN

Database Administration用户

发布于 2021-02-02 18:55:21

这完全取决于您如何设置事务。

如果START TRANSACTION和COMMIT;围绕着一系列INSERT、UPDATE和DELETE查询,那么有一些命令会触发隐式提交:

  • 变更表
  • 创建索引
  • 跌落数据库
  • 跌落指数
  • 跌落台
  • 重命名表
  • 截断表
  • 锁表
  • 解锁表
  • 设置AUTOCOMMIT =1
  • BEGIN (可以破坏另一个BEGIN或START TRANSACTION)
  • 启动事务(可以破坏另一个START TRANSACTION或BEGIN)

我以前在DBA StackExchange中提到过这一点。

你可以看到触发MySQL5.7文档中隐式提交的最新命令列表。为什么考虑隐式提交?数据可能与其他数据脱离上下文太快或太晚。

除了这些命令之外,终止DB连接将隐式回滚事务。您应该监视状态变量已中止_接驳和已中止_客户端,以查看DB连接在输入或会话时是否失败。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/284526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档