我正在尝试运行这些查询来执行 ROLLBACK,但我不太确定我做错了什么,但我收到了警告:
一些非事务性更改的表无法回滚。
经过一番研究,我发现此消息的最可能原因是错误假设表是事务性的,但实际上不是。如何确定哪些表是事务性的?
我必须假设我正在使用的数据库使用回滚,因为它在我为要求我们使用数据库的类分配的作业中。
我正在尝试运行这些查询来执行 ROLLBACK,但我不太确定我做错了什么,但我收到了警告:
一些非事务性更改的表无法回滚。
经过一番研究,我发现此消息的最可能原因是错误假设表是事务性的,但实际上不是。如何确定哪些表是事务性的?
我必须假设我正在使用的数据库使用回滚,因为它在我为要求我们使用数据库的类分配的作业中。
使用 InnoDB 存储引擎的表,或者使用 NDB 集群存储引擎的表,支持事务;其他引擎没有。(文档中某处有一个比较表,但我现在找不到。)
要检查特定表,请使用
SHOW CREATE TABLE <tablename>;
这将向您显示完整的CREATE TABLE
语句,包括该ENGINE
子句。
要检查数据库中安装了哪些引擎,请使用
SHOW ENGINES;
如果您安装了 InnoDB 但它不是默认引擎,您可以ENGINE=InnoDB
在CREATE TABLE
语句中指定或稍后更改它
ALTER TABLE <tablename> ENGINE = InnoDB;