回答:
MySQL 5.5.30で導入された設定があります:innodb_print_all_deadlocks
このオプションを有効にすると、InnoDBユーザートランザクションのすべてのデッドロックに関する情報がmysqldエラーログに記録されます。それ以外の場合は、SHOW ENGINE INNODB STATUSコマンドを使用して、最後のデッドロックに関する情報のみを表示します。InnoDBは状態を即座に検出し、トランザクションの1つを自動的にロールバックするため、偶発的な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;
。