MySQLデータベースにアクセスするためにNodeJSとmysql
ライブラリを使用しています。NodeJS + mysql:接続プールを使用するとデッドロックテーブルにつながる
私は、単一の接続を確立し、それを繰り返し使用する場合、それは正常に動作します:
global.mysql = mysql_module.createConnection({
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.password
});
私が代わりに、接続プールを使用する場合、私は取引でER_LOCK_WAIT_TIMEOUT
エラーが発生します。
global.mysql = mysql_module.createPool({
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.password,
database : config.mysql.database,
connectionLimit : 50
});
奇妙なことに、奇妙なことに、奇妙なことに、正確に同じデータで正確に同じ時刻にエラーが発生します。 I.以前のステートメントから最後に挿入されたIDを使用するたびに、3つのテーブルに連続して挿入するトランザクションがあります。いくつかのデータでは、これはうまく動作し、いくつかのデータでは、INSERT
はER_LOCK_WAIT_TIMEOUT
エラーを生成します。 NodeJSでシングル接続を使用すると、これは問題なく動作するため、接続プールに関連する問題でなければなりません。
ご協力いただければ幸いです。