web-dev-qa-db-ja.com

MySQL:「テーブルメタデータロックの待機」でスタックしているトランザクションを強制終了しても安全

おはようございます/午後/夜。

数百万行あるテーブルに列を追加しようとしました。以下は完全なクエリです。

alter table date_tasks_mark add column noDuplicate int unsigned not null default 0

しかし行き詰まっているようです。

| 28893 | root         | localhost | database_name   | Query   | 10668 | Waiting for table metadata lock | alter table date_tasks_marks add column noDuplicate int unsigned not null default 0

クエリを強制終了しても安全ですか、それともテーブルが破損しますか(約30時間この状態が続いています)。

5
M Hornbacher

はい、安全です。君の alter tableクエリも開始されていません。
しかし waiting for table metadata lockは、そのテーブルで長時間動作している別のトランザクションがあるため、問題を解決するにはトランザクションを強制終了する必要があることを意味します。 (詳細はこちら: 8.11.4メタデータのロック

このトランザクションを見つけるには、このスレッドがおそらく役に立ちます。 「テーブルメタデータロックの待機」状態を引き起こしているトランザクションを見つけるにはどうすればよいですか?

6
tombom