IT業界のすみっこ暮らし

ふと気がついたときの記録

MySQLでRollbackが効かないケースについて


経緯

下記のようなエラーメッセージが表示され、外部サーバーにあるMySQLでロールバックが効かない。

1196 Some non-transactional changed tables couldn't be rolled back

原因

非トランザクションである MyISAM テーブルとしてテーブルが作成されているので、ロールバックが出来なかった。

下記のステートメントで該当テーブルが使っているエンジンの確認ができる。

SHOW TABLE STATUS LIKE 'table_name';

スキーマ単位の確認の場合

SELECT TABLE_NAME,
 ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'schema_name' and ENGINE = 'myISAM'

EnginにMyISAMが設定されている

f:id:papamau:20180726171709p:plain

ちなみにRollback可能な場合はこうなっている

f:id:papamau:20180726171638p:plain

参考サイト

MySQL :: MySQL 5.6 リファレンスマニュアル :: B.5.5.5 非トランザクションテーブルのロールバックの失敗

運用視点なMyISAMとInnoDBと。 – LexTech

kinsta.com

qiita.com

shindolog.hatenablog.com



プライバシーポリシー