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.5.37「SHOW TABLE STATUS 構文」およびセクション13.7.5.12「SHOW CREATE TABLE 構文」を参照してください。
mysqld サーバーによってサポートされるストレージエンジンを確認するには、次のステートメントを使用します。
SHOW ENGINES;
詳細は、セクション13.7.5.17「SHOW ENGINES 構文」を参照してください。