我正在编写一个程序,在收到新数据时每几秒更新一次MySQL表。该函数有一个无限循环来不断更新,其中有另一个循环,它遍历表行并相应地选择数据。
不幸的是,无论我做什么,我都会遇到最可悲的错误:
无法创建超过max_prepared_stmt_count的语句
我尝试在每次迭代后使用语句seen in the example code here删除所有与mysql相关的值(con和driver除外)。
我尝试过添加
stmt = NULL;
stmt->close();
以防每个值都存在。
我尝试使用auto_ptr重写程序,据称根据this回答自动清理该程序。
我甚至尝试在每次迭代后关闭并重新建立与MySQL服务器的连接,但即使这样也没有帮助我。
请帮忙。
答案 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听起来你只需要一个。