我正在使用NodeJS和mysql
库来访问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
});
奇怪的是,在完全相同的时间和数据上,错误确实会发生。也就是说,我有一个事务,在其中我连续三次插入三个表,每次都使用前一个INSERT
语句中最后插入的ID。对于某些数据,这样做很好,但对于某些数据,第三个INSERT
将产生ER_LOCK_WAIT_TIMEOUT
错误。当我在NodeJS中使用单个连接时,这样做很好,因此这必须是与连接池相关的问题。
任何帮助将不胜感激。