MySqli错误:无法创建超过max_prepared_stmt_count的语句(当前值:16382)

时间:2016-09-20 07:29:35

标签: php mysql mysqli

当我使用正常的预处理查询时,我遇到了这个错误,该查询在一台服务器上工作而在另一台服务器上无效。

$this->PreparedQuery("UPDATE user_login SET end_time = '?' WHERE id = ?", 692233, 1);

3 个答案:

答案 0 :(得分:0)

问题尚不清楚。

我将发布一些避免此mysql错误的方法:

  • 检查您的客户端代码,不需要后应关闭准备好的stmt对象。请不要泄漏资源。

  • 如果您的客户端代码使用预处理语句作为缓存,请在程序看到此错误后将其全部关闭。您也可以尝试完全不将准备好的语句用作缓存,而仅创建,使用并删除它。

  • 使用SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST查找所有客户端代码,然后重复步骤1。

  • 您也可以重新启动mysql服务器以临时解决此问题。

答案 1 :(得分:0)

我最近也遇到了这个问题。确保执行后要处置PreparedQuery或其他任何准备好的SQL命令。处理呼叫ClosePreparedStatement。

答案 2 :(得分:-1)

上调:

set global max_prepared_stmt_count = 30000;

**做你需要做的事情**

再次减少到默认值:

set global max_prepared_stmt_count = 16382;