Отбрасывание таблицы заставляет MySQL зависать

Когда я пытаюсь удалить таблицу, MySQL зависает. У меня нет других открытых сеансов. Как это решить? Я ждал 10 часов, и процесс не прекратился.

Ответы

Ответ 1

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

Если это ваша таблица, смотрите эту ссылку

у вас неявный тупик. Убейте другие транзакции, чтобы разблокировать сброс, или убейте сброс, чтобы освободить другие транзакции.

Вы можете использовать KILL thread_id, в sql_plus.


Я добавляю дополнительную информацию, поскольку у меня появился еще один интересный опыт.

Metadata Мертвые блокировки могут также происходить между операцией ddl для данной таблицы (drop, alter...) и запросом выбора для этой таблицы.

Да, select

Таким образом, если вы pdo::fetch курсор в mysql (или php, например, с помощью pdo::fetch) и запустили оператор ddl для тех же таблиц, вы получите тупик.

Одним из решений этого нетипичного сценария является систематическое снятие неявных блокировок с помощью оператора commit после того, как какой-либо оператор select полностью извлечен.

Ответ 2

Перезапуск MySQL может быть не самым красивым решением, но он работал у меня:

sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE

Ответ 3

Я пытаюсь легче ответить для новичков, как я:

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                                  |
+----+-----------------+-----------------+--------+------------+-----------+---------------------------------+---------------------------------------------------+

с State: ожидание блокировки метаданных таблицы (как указано в официальном ответе)

2) KILL 13 (13 основных, соответствующих Id).

Если это действительно тупик, все последующие процессы будут продолжаться в обычном режиме.