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,先控制住错误。然后进行定位代码。它的取值范围为“0 - 1048576”,默认为16382。show variables like ‘%prepared%‘ 查看当前max_prepared_stmt_count的最大值。
      • 2、以下为在测试环境的操作,首先开启mysql日志,容易定位错误。  set global general_log = on;
      • 3、查看mysql日志存放路径,show variables where Variable_name like "general_log%" 结果中会显示。
      • 4、set global max_prepared_stmt_count = 1000 设置小点, 容易复现错误. 静待错误发生.(也可以直接看日志, 但是日志太多, 不是很方便)
      • 5、错误爆发后,SHOW GLOBAL STATUS LIKE ‘com_stmt%‘。查看数据库 prepare 的情况。如果Com_stmt_close与Com_stmt_prepare之间的差过大就会报错。

      • 6、查看日志。正常情况日志由prepare、execute、close stmt组成,如果发现有很多prepare与execute组成,而没有close stmt则基本定位到这条sql没有close stmt。查看sql,定位源码。

MySQL 报 Can't create more than max_prepared_stmt_count statements

原文地址:https://www.cnblogs.com/Zereker/p/11396597.html

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

MySQL 报 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/write to file '/tmp/ib0n3frL' (Errcode: 13 - Permission denied)

初始化数据库报错 [[email protected] mysql-5.6.24]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data Installing MySQL system tables...2017-04-03 19:52:21 0 [Warning] TIMESTAMP with implicit DEFA

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的个数

Navicat for MySQL 新建查询时,报can't create file ...系统找不到指定的文件夹出现问题

如图点击新建查询报错 解决办法 将这个路径修改一下就ok了 Navicat for MySQL 新建查询时,报can't create file ...系统找不到指定的文件夹出现问题 原文地址:https://www.cnblogs.com/perfei456/p/8576944.html

Mysql报错 :Unknown table engine 'InnoDB'  

问题: zabbix服务器重启后,进入zabbix的web发现登录不进去并且网页报mysql的错误,查看mysql的日之后,发现报错: [[email protected] ~]# tail -f /var/log/mysqld.log 140820 16:24:43 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.1.73'  socket: '/var/lib/mysql/mysql.sock'  port: 33

centOS下进入mysql报错-You must SET PASSWORD before executing this statement

解决办法: mysql>  SET PASSWORD = PASSWORD('123456'); Query OK, 0 rows affected (0.03 sec) mysql> create database roger; Query OK, 1 row affected (0.00 sec) 也就是用mysql>  SET PASSWORD = PASSWORD('123456');这句话重新设置一次密码! centOS下进入mysql报错-You must SET PASSW

mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage

mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage 在执行create table  xx  as  select xx的时候 或者在执行 tpcc-mysql的tpcc_load 的时候 都会遇到这个错误 1534, HY000, Writing one row to the row-based binary log failedRetrying ... 1

mysql 报错之创建自定义函数

I experienced this error while trying to alter one of my stored procedures remotely on a master server. After some research, I ended up getting information from “Binary Logging of Stored Programs“. From MySQL Reference in verbatim:When you create a s

mysql报错问题解决Character set 'utf8mb4' is not a compiled character set

mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file 报错的解决方法 1.由于日常程序使用了字符集utf8mb4,为了避免每次更新时,set names utf8mb4,就把配置文件改了,如下: 增加了mysql客户端的默认字符集设置 [[email protected]~]# vim