MySQL: «Превышено время ожидания блокировки» - PullRequest
12 голосов
/ 15 сентября 2008

Я пытаюсь удалить несколько строк из базы данных MySQL 5.0.45:

delete from bundle_inclusions;

Клиент работает некоторое время, а затем возвращает ошибку:

Lock wait timeout exceeded; try restarting transaction

Возможно, есть какая-то незафиксированная транзакция, которая имеет блокировку для этой таблицы, но мне нужен этот процесс, чтобы превзойти любые такие блокировки. Как мне сломать блокировку в MySQL?

Ответы [ 4 ]

21 голосов
/ 15 сентября 2008

Я согласен с Эриком; TRUNCATE TABLE - это путь. Однако, если вы не можете использовать это по какой-либо причине (например, если вы не действительно хотите удалить каждую строку в таблице), вы можете попробовать следующие варианты:

  • Удалить строки в меньших пакетах (например, УДАЛИТЬ ИЗ ПАКЕТОВ_ключений, ГДЕ ИД МЕЖДУ? И?)
  • Если это таблица MyISAM (на самом деле, это может работать и с InnoDB), попробуйте выполнить команду LOCK TABLE перед DELETE. Это должно гарантировать, что у вас есть эксклюзивный доступ.
  • Если это таблица InnoDB, то после истечения времени ожидания, используйте SHOW INNODB STATUS. Это должно дать вам некоторое представление о том, почему не удалось получить блокировку.
  • Если у вас есть привилегия SUPER, вы можете попробовать SHOW PROCESSLIST ALL, чтобы увидеть, какие другие соединения (если есть) используют таблицу, а затем использовать KILL, чтобы избавиться от того, с кем вы конкурируете.

Я уверен, что есть много других возможностей; Я надеюсь, что одна из них поможет.

5 голосов
/ 22 мая 2012

Linux: В конфигурации mysql (/etc/my.cnf или /etc/mysql/my.cnf) вставьте / отредактируйте эту строку

innodb_lock_wait_timeout = 50

Достаточно увеличить значение (в секундах), перезапустить базу данных, внести изменения. Затем отмените изменение и перезапустите снова.

3 голосов
/ 21 марта 2013

У меня была та же проблема, мошенническая транзакция без конца. Я перезапустил процесс mysqld. Вам не нужно усекать таблицу. Вы можете потерять данные из этой мошеннической транзакции.

2 голосов
/ 15 сентября 2008

Гадание: усеченная таблица bundle_inclusion

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