при удалении или переименовании таблицы с помощью механизма хранения myisam я понимаю, что он ожидает блокировки метаданных таблицы, однако показ полного списка процессов не обнаруживает проблемный запрос. любая идея?
| 462 | root | xxx.xxx.xxx.xx:54658 | mydb | Sleep | 1162 | | NULL | | 465 | root | localhost | mydb | Query | 0 | NULL | show full processlist | | 466 | root | localhost | mydb | Query | 125 | Waiting for table metadata lock | alter table mytable rename to mytable_junk |
Если вы используете MySQL 5.5, есть отчет об ошибке.
Если факт, нажмите здесь, чтобы узнать о блокировке метаданных. Он предназначен для защиты таблиц от выполнения DDL во время выполнения транзакции.
Что кажется странным, так это то, что вы получаете это в таблице MyISAM.
Я пытался преобразовать сортировку таблицы следующим образом:
alter table xxx convert to character set utf8 collate utf8_unicode_ci;
Затем я заметил, что в «Показать полный список процессов» запрос завис в следующем состоянии «Ожидание блокировки метаданных таблицы».
Чтобы решить эту проблему, я параллельно открыл другую консоль и запустил следующую команду SQL:
flush tables
С уважением