Відповіді:
Існує налаштування, яке було введено в MySQL 5.5.30: innodb_print_all_deadlocks
Якщо цей параметр увімкнено, інформація про всі тупикові місця в транзакціях користувача InnoDB записується в журнал помилок mysqld. В іншому випадку ви бачите інформацію лише про останній тупик, використовуючи команду SHOW ENGINE INNODB STATUS. Випадковий тупик InnoDB не обов'язково є проблемою, оскільки InnoDB виявляє стан негайно, і повертає одну з транзакцій автоматично. Ви можете скористатися цією опцією, щоб вирішити, чому виникають тупикові місця, якщо програма не має відповідної логіки керування помилками, щоб виявити відкат та повторити його роботу. Велика кількість тупиків може вказувати на необхідність реструктуризації транзакцій, які видають оператори DML або SELECT ... FOR UPDATE для декількох таблиць, щоб кожна транзакція отримувала доступ до таблиць в одному порядку, тим самим уникаючи умови тупикового зв'язку.
Просто додайте цей параметр до my.cnf
[mysqld]
innodb_print_all_deadlocks = 1
або
[mysqld]
innodb_print_all_deadlocks = on
Вам не доведеться перезавантажувати mysql. Просто увійдіть в mysql і запустіть
mysql> SET GLOBAL innodb_print_all_deadlocks = 1;
or
mysql> SET GLOBAL innodb_print_all_deadlocks = 'ON';
Ця настройка також нова для мене.
Спробуйте і скажіть нам все, що ви думаєте !!!
mysql.user
та запускати FLUSH PRIVILEGES;
.