MySQL - Получение "Превышено время ожидания блокировки; попробуйте перезапустить транзакцию" - PullRequest
0 голосов
/ 06 октября 2018

Я создал одну таблицу с 4 столбцами в БД Oracle MySQL и версию 5.7.Общее количество записей в БД составляет 4 912 442. Теперь я пытаюсь вставить еще одну 100 000 записей в MySQL БД.

Я создал простое приложение Spring Boot и читал записи из файла ивставка в MySQL DB.

Получение приведенной ниже ошибки при вставке записей в MySQL DB после подсчета количества записей 4912442:

[WARN ] SqlExceptionHelper - SQL Error: 1205, SQLState: 40001
[ERROR] SqlExceptionHelper - Lock wait timeout exceeded; try restarting transaction

Примечание: MySQL DB использует в 2экземпляр MASTER-MASTER Cluster.

, а также выполняемые команды ниже даже при получении вышеуказанной ошибки:

SET GLOBAL innodb_lock_wait_timeout = 5000; 
SET innodb_lock_wait_timeout = 5000;

1 Ответ

0 голосов
/ 07 октября 2018

Lock wait timeout обычно происходит, когда обновление / вставка транзакции ожидает строки (-й) данных, которые уже заблокированы какой-либо другой транзакцией.

Возможные причины: большой объем данных,неправильный дизайн таблицы, ограничения и т. д.

Вот некоторые решения должны работать:

  1. Проверить текущее значение времени ожидания блокировки show variables like 'innodb_lock_wait_timeout;и обновите его до 120 что-то более высокое.

  2. ИЛИ Вы можете установить более высокое значение в /etc/my.cnf с помощью этой строки, но не забудьте перезапустить MySQL,если вы не можете перезапустить, просто запустите запрос SET GLOBAL innodb_lock_wait_timeout = 120;

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