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

时间:2017-12-03 02:42:45

标签: c++ mysql mysql-connector

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

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

  

无法创建超过max_prepared_stmt_count的语句

我尝试在每次迭代后使用语句seen in the example code here删除所有与mysql相关的值(con和driver除外)。

我尝试过添加

 stmt = NULL;
 stmt->close(); 

以防每个值都存在。

我尝试使用auto_ptr重写程序,据称根据this回答自动清理该程序。

我甚至尝试在每次迭代后关闭并重新建立与MySQL服务器的连接,但即使这样也没有帮助我。

请帮忙。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

来自mysql.com"默认值为16,382。" mysql.com-sysvar_max_prepared_stmt_count听起来你只需要一个。