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 nontransactional tables are not affected by the
ROLLBACK
statement.
If you were not deliberately mixing transactional and
nontransactional 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 nontransactional.
You can check the storage engine for a table by using either of these statements:
SHOW TABLE STATUS LIKE 'tbl_name
'; SHOW CREATE TABLEtbl_name
;
See Section 12.5.5.38, “SHOW TABLE STATUS
Syntax”, and
Section 12.5.5.12, “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 12.5.5.17, “SHOW ENGINES
Syntax”, and
Section 12.5.5.41, “SHOW VARIABLES
Syntax”.
MySQL Enterprise. Ensure that your data is adequately protected by subscribing to the MySQL Enterprise Monitor. For more information, see http://www.mysql.com/products/enterprise/advisors.html.
User Comments
This warning is sometimes raised by mistake. See the following bugs for examples:
http://bugs.mysql.com/21840
http://bugs.mysql.com/29767
http://bugs.mysql.com/29769
Add your own comment.