A.5.5. Rollback Failure for Non-Transactional Tables
If you receive the following message when trying to perform a
ROLLBACK
, it means that one or more of the
tables you used in the transaction do not support transactions:
Warning: Some non-transactional changed tables couldn't be rolled back
These non-transactional tables are not affected by the
ROLLBACK
statement.
If you were not deliberately mixing transactional and
non-transactional tables within the transaction, the most likely
cause for this message is that a table you thought was
transactional actually is not. This can happen if you try to
create a table using a transactional storage engine that is not
supported by your mysqld server (or that was
disabled with a startup option). If mysqld
doesn't support a storage engine, it instead creates the table
as a MyISAM
table, which is
non-transactional.
You can check the storage engine for a table by using either of
these statements:
SHOW TABLE STATUS LIKE 'tbl_name
';
SHOW CREATE TABLE tbl_name
;
See Section 13.5.4.24, “SHOW TABLE STATUS
Syntax”, and
Section 13.5.4.7, “SHOW CREATE TABLE
Syntax”.
You can check which storage engines your
mysqld server supports by using this
statement:
SHOW ENGINES;
You can also use the following statement, and check the value of
the variable that is associated with the storage engine in which
you are interested:
SHOW VARIABLES LIKE 'have_%';
For example, to determine whether the InnoDB
storage engine is available, check the value of the
have_innodb
variable.
See Section 13.5.4.11, “SHOW ENGINES
Syntax”, and
Section 13.5.4.27, “SHOW VARIABLES
Syntax”.