在我的JavaScript应用中,我有一个类似的代码,该代码从websocket读取一些数据,然后使用mysql2模块将其插入MySQL数据库:
const mysql = require('mysql2/promise');
const db = await mysql.createConnection(params);
const ws = new WebSocket(someUrl);
ws.on('message', (data) =>
{
const t = JSON.parse(data);
//insert some row to MySQL table
db.execute("INSERT INTO table1 …);
});
此代码中会定期发生以下MySQL错误:
Can't create more than max_prepared_stmt_count statements (current value: 16382)
我的第一个理解是,一次只执行一个语句,因为JavaScript中只有一个线程,而且我只使用一个数据库连接,但是看起来机制有点复杂。
实际上发生了什么?多条语句来自哪里?
EDIT1:
可能是mysql2 caches the statements。