Can't create more than max_prepared_stmt_count statements

使用mysql connector的时候,如果报这个错误

Can‘t create more than max_prepared_stmt_count statements (current value: 16382)

是因为下面的写法有一定问题,如果catch了错误,那么stmt就不会释放,最好是把stmt放到外面,在最后的时候delete,但是一般不会出问题,关键是如果写了bug,导致不断运行catch错误,就会导致preparedstatement大量不会释放,超出默认的16382的个数

try
{
	sql::PreparedStatement * stmt = con->prepareStatement(sqlstr);

	stmt->setInt(1, id1);
	stmt->setInt(2, id2);
	stmt->execute();
	delete stmt;
}
catch (sql::SQLException & e)
{
	bsqlcon = false;
	Log_Text_Format(LOGLEVEL_ERROR, "Err: SQLException in %s %s %d ERR[%s] ErrCode[%d] SQLState[%s] sql[%s]", __FILE__, __FUNCTION__, __LINE__, e.what(), e.getErrorCode(), e.getSQLState().c_str(), sqlstr.c_str());
}

可以通过下面的语句查看目前申请了几个,使用了几个,释放了几个,正常情况申请的和释放的应该是很接近在几十或是上百个以内,并且固定不变不会逐渐增加。不过申请释放的这个值,如果直接关闭程序,是不会改变的,还是维持最后一次的记录

show global status like ‘com_stmt%‘;

Com_stmt_execute    563281
Com_stmt_close    563280
Com_stmt_fetch    0
Com_stmt_prepare    563359
Com_stmt_reset    0
Com_stmt_send_long_data    0
Com_stmt_reprepare    0

Can't create more than max_prepared_stmt_count statements

原文地址:https://www.cnblogs.com/studywithallofyou/p/12244638.html

时间: 2024-10-13 10:41:18

Can't create more than max_prepared_stmt_count statements的相关文章

NodeJs Mysql Cant't create more than max_prepared_stmt_count statements

这阵子碰到一个数据库上的问题,一个刚上线不到一周的 NodeJs 接口服务里所有的查询全部都挂掉了,接口一直处于 pending 状态,看了下 pm2 的日志发现了报错:Cant't create more than max_prepared_stmt_count statements,重启 Node 服务后接口查询恢复正常. 网上查了查资料基本上都是让修改 max_prepared_stmt_count 的,当时觉得这个方案治标不治本就没有采纳,后来优化了一下MySQL的部分代码就让服务继续跑

MySQL 报 Can't create more than max_prepared_stmt_count statements

前言 最近压测完毕以后, MySQL 报 Can't create more than max_prepared_stmt_count statements. 正常情况下是程序没有关闭 stmt 导致. 也不排除并发量很大, MySQL 没机会去关闭. 这种情况我们系统来说出现概率较少, 并发量还没有那么大. 以下为定位问题的过程. 操作 1.出现此类问题, 如果是线上应立即执行 set global max_prepared_stmt_count = 1048576,先控制住错误.然后进行定位

max_prepared_stmt_count

SqlServer迁移数据到MySQL报错 链接服务器"192.168.66.53(ewallet_lxl)"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "[MySQL][ODBC 5.2(w) Driver][mysqld-5.5.17-log]Can't create more than max_prepared_stmt_count statements (current value: 16382)". 消息 7343,级别

阿里云RDS-MYSQL数据库参数设置,K哥

2016.9.2 最近被阿里云的数据库要搞疯掉了 自打阿里云抽风,非要取消myisam引擎,都换成innodb 没事总是主备切换,也没有错误日志 一问客服就是物理机波动,擦,波动是什么???????? 服务器自己跳舞了吗 看了看参数设置,很多都不知道 这两天有时间自己搜索整理了下 发给大家,有需要的看看 我的服务器应用主要是WEB网站服务 有一些不懂的地方或者不对的地方,还请大牛不吝赐教! 回复在评论中就可以了,thank you 我是K哥 auto_increment_offset表示自增长字

记一次mysql的preparedStatement使用超限问题

[现象&背景] 本服务是个为数据库的分库分表提供路由规则计算,sql过滤执行的中间服务.即上游将请求发给本服务,本服务根据分库分表规则将相应的sql执行发送给对应的分库.分表去执行,并整理结果返回给上游. 2016-07-14下午,上游流量切换后,mysql大量报出" Can't create more than max_prepared_stmt_count statements (current value: 16382)",mysql不能工作导致本层数据库路由服务不能工作

Go prepare statment超过mysql最大数

mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (current value: 16382) . 给出的回复如下: max_prepared_stmt_count参数限制了同一时间在mysqld上所有session中prepared 语句的上限.它的取值范围为“0 - 1048576”,默认为16382.mysql对于超出max_prepared_stm

MySQL压测--注意事项和FAQ

上次我们讲了TPCC的安装和一些使用方法,今天先不着急真正的做MySQL压力测试,先把我最近做压力测试的遇到的一些问题罗列出来,这样 后面做测试可以事半功倍. 1.注意事项 (1).提前规划好具体要测试什么,即测试目的,比如 MySQL5.6与5.7的性能差异: 异步复制和半同步复制的TPS: 设置双1(innodb_flush_log_at_trx_commit=1.sync_binlog=1)性能对数据库性能影响多少: 确认即将上线的新业务对MySQL负载影响多少,是否能承载得住,是否需要对

Datatypes translation between Oracle and SQL Server

Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes translation is one of the most important things you need to consider when migrate your application from one database to the other. This is an article in t

移动表到另外一个表空间

把一个表从一个表空间移动到另外一个表空间有两种方式 一,使用"alter table X move tablespace Y" and "alter index X rebuild tablespace Y" 优点:简单,快速 缺点:不能移动含有LONG or LONG RAW字段的表 ALTER TABLE MOVE TABLESPACE METHOD: =================================== We will start with