TL;DR MySQL 8.0(細かくは8.0.4っぽい)とそれ以降は「外部キー制約を持っているテーブルにSELECTするとそのテーブルの親テーブルにもメタデータロック(MDL)を置くようになった」 MDLであるがゆえに foreign_key_checks をOFFにしようが 無効化はできない MySQL :: WL#6049: Meta-data locking for FOREIGN KEY tables WL#6049 “Meta-data locking for FOREIGN KEY tables” and WL#11059 · mysql/mysql-server@6626f76 これ以降にもいくつかコミットが続いている 論より証拠。 サンプルスキーマはこんなかんじ。 CREATE TABLE `item` ( `item_id` int NOT NULL, `registe
![MySQL 8.0 vs 外部キー制約 vs ALTER TABLEでメタデータロック待ちになったら疑うこと](https://cdn-ak-scissors.b.st-hatena.com/image/square/713bede0c0079b1130e8700a9be189bf9e3f7bfa/height=288;version=1;width=512/https%3A%2F%2Fblogger.googleusercontent.com%2Fimg%2Fb%2FR29vZ2xl%2FAVvXsEgzAPpAETvHygbovzldQmb7zKB4wu1_YLqh2toFNan3pRN9WFTh8bUVhDpZPcDlZbLKtv-d1pT4axQm81KOljn_TVskoXQaBL4T0Gyw-XiEuc3Po2uooZrPfrJwRnXIkRf9GKQuvBOX0KQ%2Fw1200-h630-p-k-no-nu%2FWL6049.png)