MySQL 准备好的语句未使用 C++ 连接器在无限循环中清理

MySQL Prepared Statements not cleaning up in an infinite loop using C++ Connector

我正在编写一个程序,当收到新数据时每隔几秒更新一次 MySQL tables。该函数有一个不断更新的无限循环,其中有另一个循环遍历 table 行并相应地选择数据。

不幸的是,无论我做什么,我都遇到了最可悲的错误:

Can't create more than max_prepared_stmt_count statements

我尝试在每次使用语句 seen in the example code here.

迭代后简单地删除所有 mysql 相关值(con 和 driver 除外)

我试过添加

 stmt = NULL;
 stmt->close(); 

以防万一在每个值之前。

我尝试用 auto_ptr, which allegedly clean up automatically, based on this 答案重写程序。

我什至尝试在每次迭代后关闭并重新建立与 MySQL 服务器的连接,但即便如此也无济于事。

请帮忙。

可能需要有关循环的更多信息。

但听起来您的 stmt = con->createStatement(); 在您的循环中。在循环开始之前,您只需要一个连接。

然后你可以在你的循环中多次执行一个语句,res = stmt->executeQuery("SELECT 'Hello World!' AS _message");

当您的应用程序终止时,您将关闭您的 stmt,delete stmt;

来自 mysql.com "The default value is 16,382." mysql.com-sysvar_max_prepared_stmt_count 听起来你只需要一个。