こんにちは。SWEの中村(@mnmandahalf)です。 最近サービス稼働中にDDLを適用するタイミングで初遭遇したMySQLのエラーについて皆様にご紹介したいと思います。 エラーの内容と発生条件(概要) 1 トランザクション分離レベル transaction-isolation が REPEATABLE-READ である 2 セッションAのトランザクション内でテーブルt1をメタデータロックしないテーブルt2へのSQLを実行 3 セッションBがテーブルt1に対して特定のDDLを実行 4 セッションAがテーブルt1を参照すると ERROR 1412 (HY000): Table definition has changed, please retry transaction というエラーが発生し、セッションAのトランザクションがロールバックする ※(注記)なお、テーブルt2がテーブルt1への外部キ