MySQL:START 事务 - 更新 - 回滚:非事务表

MySQL:START TRANSACTION - UPDATE - ROLLBACK : Non-Transactional Tables

我正在尝试 运行 这些查询来执行回滚,我不太确定我做错了什么,但我收到警告:

Some non-transactional changed tables couldn't be rolled back.

经过一些研究,我发现导致此消息的最可能原因是 table 是事务性的错误假设,但实际上不是。如何确定哪些 table 是事务性的?

我必须假设我正在使用的数据库使用回滚,因为它在我为 class 分配的任务中,要求我们使用数据库。

使用InnoDB存储引擎的表,或者使用NDB集群存储引擎的表,支持事务;其他引擎没有。 (文档中某处有比较 table,但我现在找不到。)

要检查特定的 table,请使用

SHOW CREATE TABLE <tablename>;

它将向您显示完整的 CREATE TABLE 语句,包括 ENGINE 子句。

要检查数据库中安装了哪些引擎,请使用

SHOW ENGINES;

如果您安装了 InnoDB 但它不是默认引擎,您可以在 CREATE TABLE 语句中指定 ENGINE=InnoDB 或稍后将其更改为

ALTER TABLE <tablename> ENGINE = InnoDB;