前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql_stmt_prepare failed! error(1461)Can't create more than

mysql_stmt_prepare failed! error(1461)Can't create more than

作者头像
李海彬
发布2018-03-20 17:02:19
2.5K0
发布2018-03-20 17:02:19
举报
文章被收录于专栏:Golang语言社区

1461错误, mysql_stmt_prepare failed!

今天现场咨询我们问如何处理1461错误。

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_stmt_count的prepare语句就会报1461的错误。

对于现场而言,可以先将这个值调大。

一般而言,默认值应该是足够用的,因为现场的并发其实没有那么的大。

一个可能的原因是应用端那边没有关闭prepared的语句。

直连后端master执行如下命令

mysql> show global status like ‘com_stmt%’;

查看如下3个参数值:

Com_stmt_close prepare语句关闭的次数

Com_stmt_execute prepare语句执行的次数

Com_stmt_prepare prepare语句创建的次数

请确认Com_stmt_close的值是否接近于Com_stmt_prepare。

information_schema很有用,大家可以去这里面查看一些db的基础信息。

use information_schema; -- mysql的基础信息库

select * from ENGINES ; -- 后台存储引擎信息数据的表

show engines; -- mysql窗口界面的命令

select * from GLOBAL_STATUS ; -- 当前运行的全局的status参数信息数据

show status; -- 命令行查看

select * from GLOBAL_VARIABLES ; -- 当前的全局的参数存储的数据

show variables; -- 命令行查看

sysbench 2000并发读写 报错如下:

FATAL: mysql_stmt_prepare() failed

FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)"

FATAL: thread#1638: failed to prepare statements for test

查看值

mysql> show global status like 'com_stmt%';

+-------------------------+----------+

| Variable_name | Value |

+-------------------------+----------+

| Com_stmt_close | 15000 |

| Com_stmt_execute | 11024051 |

| Com_stmt_fetch | 0 |

| Com_stmt_prepare | 124200 |

| Com_stmt_reprepare | 0 |

| Com_stmt_reset | 0 |

| Com_stmt_send_long_data | 0 |

+-------------------------+----------+

mysql> set global Com_stmt_close=124000;

ERROR 1193 (HY000): Unknown system variable 'Com_stmt_close'

mysql> show global variables like 'com_stmt%';

Empty set (0.00 sec)

mysql> show global variables like '%stmt%';

+----------------------------+----------------------+

| Variable_name | Value |

+----------------------------+----------------------+

| binlog_stmt_cache_size | 32768 |

| max_binlog_stmt_cache_size | 18446744073709547520 |

| max_prepared_stmt_count | 16382 |

+----------------------------+----------------------+

3 rows in set (0.00 sec)

mysql> set global max_prepared_stmt_count=124000;

Query OK, 0 rows affected (0.00 sec)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档