web-dev-qa-db-ja.com

テーブルを削除するとMySQLがハングする

テーブルを削除しようとすると、MySQLがハングします。他に開いているセッションはありません。これを解決するには? 10時間待ちましたが、プロセスは終了していません。

22
cool_cs
Waiting for table metadata lock
drop table tableA name

SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10

これがあなたのテーブルである場合、 このリンク を参照してください

暗黙のデッドロックがあります。他のトランザクションを強制終了してドロップを解放するか、ドロップを強制終了して他のトランザクションを解放します。

Sql_plusで [〜#〜] kill [〜#〜] thread_idを使用できます。


別の興味深い経験を思いついたので、さらに情報を追加しています。

Metadataデッドロックは、特定のテーブル(dropalter...)でのddl操作とselectそのテーブルに対するクエリ。

はい、select

したがって、mysql(またはphp、たとえばpdo::fetch)、同じテーブルでddlステートメントを実行すると、デッドロックが発生します。

この非典型的なシナリオの1つの解決策は、selectステートメントが完全にフェッチされた後で、commitステートメントを使用して暗黙的なロックを体系的に解放することです。

18
Sebas

MySQLを再起動することは最もかっこいい解決策ではないかもしれませんが、私にとってはうまくいきました:

Sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
13
kqw

私は次のように初心者のために簡単な答えを試みています:

1)実行:

SHOW PROCESSLIST

あなたが次のようなものを手に入れたら:

+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+
| Id | User            | Host            | db     | Command    | Time      | State                           | Info                                              |
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+
|  4 | event_scheduler | localhost       | NULL   | Daemon     | 580410103 | Waiting on empty queue          | NULL                                              |
| 13 | root            | localhost:50627 | airbnb | Sleep      |     10344 |                                 | NULL                                              |
| 17 | root            | localhost:50877 | NULL   | Query      |      2356 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 18 | root            | localhost:50878 | airbnb | Query      |      2366 | Waiting for table metadata lock | DROP TABLE `airbnb`.`characteristics`             |
| 21 | root            | localhost:51281 | airbnb | Query      |      2305 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type`        |
| 22 | root            | localhost:51282 | airbnb | Query      |      2301 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`characteristics`      |
| 23 | root            | localhost:51290 | airbnb | Query      |      2270 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`property_type`   |
| 24 | root            | localhost:51296 | airbnb | Query      |      2240 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`property_type`        |
| 26 | root            | localhost:51303 | NULL   | Query      |      2212 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 27 | root            | localhost:51304 | NULL   | Query      |      2218 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type`        |
| 29 | root            | localhost:51306 | NULL   | Query      |      2176 | Waiting for table metadata lock | SHOW INDEXES FROM `airbnb`.`characteristics`      |
| 30 | root            | localhost:51308 | NULL   | Query      |      2122 | Waiting for table metadata lock | DROP TABLE `airbnb`.`characteristics`             |
| 34 | root            | localhost:51312 | NULL   | Query      |      2063 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 35 | root            | localhost:51313 | NULL   | Query      |      2066 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type`        |
| 39 | root            | localhost:51338 | NULL   | Query      |      2004 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`characteristics` |
| 40 | root            | localhost:51339 | NULL   | Query      |      2008 | Waiting for table metadata lock | SHOW FULL COLUMNS FROM `airbnb`.`bed_type`        |
| 45 | root            | localhost       | airbnb | Field List |       997 | Waiting for table metadata lock |                                                   |
| 46 | root            | localhost       | airbnb | Field List |       798 | Waiting for table metadata lock |                                                   |
| 53 | root            | localhost       | airbnb | Query      |         0 | starting                        | SHOW PROCESSLIST                                  |
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+

状態:テーブルのメタデータのロックを待機しています(公式回答に記載されています)

2)KILL 13(IDに対応する13)。

それが本当にデッドロックである場合、以下のすべてのプロセスは正常に続行されます。

5
Golddy