我从mysql得到以下错误: Can\'t create more than max_prepared_stmt_count statements (current value: 16382)
我现在已经把这个值增加到最大值(一百万)。
我正在使用 node-mysql2
但我在想,不管我准备的报表数量最终会达到100万。
所以我的问题是,我该如何正确地循环使用这些语句,使它们不会每隔几周就不断地达到100万条?
同时,如果我达到这个1米标记,如何清除这个缓存?
我的node/mysql2代码如下:
import mysql from 'mysql2/promise'
const pool = mysql.createPool({ host, port, connectionLimit: 100 })
export default pool
然后,我用准备好的声明到处游泳池一个la:
pool.execute('SELECT * FROM ... etc etc')
我猜持有100个连接并重用它们会导致准备好的语句最终达到最大值 maxPreparedStatements
我可以添加到配置中。这会阻止将来的问题吗?或者我仍然需要时不时地在mysql中“清除准备好的语句”(如果是这种情况,清除它的命令是什么)?
注意我有3个连接到mysql的复制服务器
1条答案
按热度按时间nnt7mjpx1#
希望你已经找到了答案。
我在prepared语句中看不到这一点,尽管我在使用每次单个参数更改时都不同的请求时看到了这一点(在js中构建sql请求字符串…)。
你确定你用的是事先准备好的陈述吗?
您的请求应该如下所示:
我在测试https://www.npmjs.com/package/mysql2 版本2.2.5。
以这种方式提出所有要求。也许可以激活开发服务器上的mysql日志来检查所发出的请求。
在mysql cli中执行的mysql调试请求:
重要值是prepared\u stmt\u count status和max\u prepared\u stmt\u count config。