Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  InnoDB Error Handling

17.20.5 InnoDB 错误处理

以下内容描述了InnoDB的错误处理机制。InnoDB有时只回滚失败的语句,其他时候回滚整个事务。

  • 如果在表空间中运行出错,MySQL将出现Table is full错误,并回滚SQL语句。

  • 事务死锁会导致InnoDB回滚整个事务。在这种情况下,重新执行整个事务。

    锁等待超时会导致InnoDB回滚当前语句(即遇到超时的语句)。如果启用--innodb-rollback-on-timeout,则整个事务将回滚。否则,如果使用默认行为,可以重新执行语句;如果启用--innodb-rollback-on-timeout,则整个事务将回滚。

    在繁忙服务器上,死锁和锁等待超时都是正常情况,应用程序需要了解这些情况可能会发生,并通过重试来处理它们。您可以通过尽量少地工作,以最短的时间持有锁定,并锁定最小的行数来使其更不可能发生。有时候,将工作分配到不同的事务中可能是实用的和有帮助的。

  • 如果未指定IGNORE选项,您的SQL语句将在遇到重复键错误时回滚。

  • row too long error也会导致SQL语句回滚。

  • 其他错误主要是由MySQL代码层面检测的(在InnoDB存储引擎级别以上),它们将回滚相应的SQL语句。锁定不会在单个SQL语句回滚时释放。

在隐式回滚和执行明确ROLLBACK SQL 语句时,SHOW PROCESSLIST 在相关连接的State列中显示Rolling back