ROLLBACK
を実行しようとしたときに次のメッセージを受け取った場合は、トランザクションで使用された 1 つ以上のテーブルがトランザクションをサポートしていないことを意味します。
Warning: Some non-transactional changed tables couldn't be rolled back
これらの非トランザクションテーブルは、ROLLBACK
ステートメントの影響を受けません。
トランザクション内でトランザクションテーブルと非トランザクションテーブルを意図的に混在させていない場合、このメッセージの原因は、トランザクションテーブルと考えていたテーブルが実際にはそうではなかったことである可能性があります。 これは、mysqld サーバーによってサポートされていない (または起動オプションで無効にされた) トランザクションストレージエンジンを使用してテーブルを作成しようとした場合に発生することがあります。 mysqld がストレージエンジンをサポートしない場合は、非トランザクションである MyISAM
テーブルとしてテーブルが作成されます。
テーブルのストレージエンジンを確認するには、次のいずれかのステートメントを使用します。
SHOW TABLE STATUS LIKE 'tbl_name';
SHOW CREATE TABLE tbl_name;
セクション13.7.7.38「SHOW TABLE STATUS ステートメント」およびセクション13.7.7.10「SHOW CREATE TABLE ステートメント」を参照してください。
mysqld サーバーによってサポートされるストレージエンジンを確認するには、次のステートメントを使用します。
SHOW ENGINES;
詳細は、セクション13.7.7.16「SHOW ENGINES ステートメント」を参照してください。