MySQL:START TRANSACTION - UPDATE - ROLLBACK:非事务性表

时间:2016-04-06 00:30:52

标签: mysql transactions subquery rollback savepoints

我试图运行这些查询来执行ROLLBACK,而且我不太确定我做错了什么,但我收到了警告:

  

某些非交易更改的表格无法回滚。

经过一番研究后,我发现这个消息最可能的原因是假设一个表是事务性的,但事实上并非如此。如何确定哪些表是事务性的?

我必须假设我使用的数据库使用回滚,因为它是我为需要我们使用数据库的类赋予的赋值。

1 个答案:

答案 0 :(得分:3)

使用InnoDB存储引擎的表或使用NDB集群存储引擎的表支持事务;其他发动机没有。 (文档中有一个比较表,但我现在找不到它。)

要检查特定的表格,请使用

SHOW CREATE TABLE <tablename>;

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

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

SHOW ENGINES;

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

更改它
ALTER TABLE <tablename> ENGINE = InnoDB;