MySQL Alter Table DB зависает - PullRequest
1 голос
/ 19 марта 2019

Я использую Ubuntu 16.04.3 и mysql Ver 14.14 Distrib 5.7.22.

Когда я пытаюсь изменить столбец таблицы БД с помощью следующей команды, база данных кажется зависшей;

mysql> изменить записи таблицы изменить имя столбца varchar (150);

Размер таблицы составляет 2,8 МБ (6000 записей).

Я просто пытаюсь изменитьvarchar(150) part.

Я пытался сделать то же самое в программах с графическим интерфейсом, таких как HeidiSQL и Workbench, тот же результат - программа вылетает, и мне нужно перезапустить сеанс.

Я вошел в системув БД и сервер как корень.Я проверил /var/log/mysql/error.log, но он отображает только неудачные попытки входа в систему, но ничего не относится к этой ошибке.

Есть идеи, что происходит или как я могу устранить эту проблему?

1 Ответ

0 голосов
/ 19 марта 2019

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

Если вы можете запустить SHOW PROCESSLIST в другом окне, в то время как ALTER TABLE кажется зависшим, он может показывать "ожидание"для блокировки метаданных ".

+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+
| Id | User | Host      | db   | Command | Time | State                           | Info                   | Rows_sent | Rows_examined |
+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+
|  4 | root | localhost | test | Query   |    0 | init                            | show processlist       |         0 |             0 |
|  5 | root | localhost | test | Query   |   15 | Waiting for table metadata lock | alter table foo...     |         0 |             0 |
+----+------+-----------+------+---------+------+---------------------------------+------------------------+-----------+---------------+

Затем вам нужно выяснить, в каком приложении есть открытая транзакция, которая блокирует ALTER TABLE, и заставить это приложение завершить транзакцию, или же завершить транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...