一、问题描述
mysql在执行SQL语句时获取通过数据库脚本导入数据时,突然报一下错误:
[ERROR] Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage;
increase this mysqld variable and try again, Error_code: 1197;
handler error HA_ERR_RBR_LOGGING_FAILED; the event's master log FIRST, end_log_pos 2149953254, Error_code: 1197
二、问题分析
产生这个问题的原因:max_binlog_cache_size参数设置的问题。这个参数是有默认值的,而且官方提供的默认值是很大的(18446744073709547520),所以如果用默认值的话,一般是不会报错的。
但是,当你自己指定这个参数的值后,就会用你指定的值,当你指定的值不合理是,就会报这个错误。
注意:跟这个参数相关的还有两个参数,分别是:binlog_cache_size、binlog_cache_use
binlog_cache_size:在事务过程中用来存储二进制日志的缓存。
binlog_cache_use:表示用biglog_cache_size缓存的次数
max_binlog_cache_size:标示binlog最大能够使用的cache内存的大小,和参数binlog_cache_size相对应。超过就会报错
三、问题解决方案
最简单的方案就是:将这几个相关的参数全部给注释掉,直接用其默认值即可。
修改的配置文件位置:一般在服务器:/etc/my.cnf文件中,如果目录/etc/目录下找不到该文件。可以全局搜索一下。搜索命令如下:
find / -name my.cnf
修改后的配置文件部分截图如下:
修改重启mysql,即可生效。