MySQL中max_allowed_packet设置过小导致记录写入失败的解决办法

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置

show VARIABLES like '%max_allowed_packet%';

显示的结果为:

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


| Variable_name | Value |


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


| max_allowed_packet | 1048576 |


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



以上说明目前的配置是:1M

修改方法

1、修改配置文件

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

max_allowed_packet = 20M
如果找不到my.cnf可以通过

mysql --help | grep my.cnf
去寻找my.cnf文件。

linux下该文件在/etc/下。

2、在mysql命令行中修改

在mysql 命令行中运行

set global max_allowed_packet = 2*1024*1024*10
然后退出命令行,重启mysql服务,再进入。

show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

经验总结:
在很多台机器上用方法一都没问题,但之前遇到一台机器死活都不成功,
使用命令行方式:set global max_allowed_packet = 16M;
也不行,但使用
set global max_allowed_packet = 2*1024*1024*10;
成功了,很是郁闷
问题终于找出来了,不是方法的问题,是设置完成后要把命令行退出重新登录查看,看来系统变量的值在登录后会缓存。但在这台机器上使用配置INI文件。

时间: 2024-09-20 16:53:55

MySQL中max_allowed_packet设置过小导致记录写入失败的解决办法的相关文章

mysql max_allowed_packet 设置过小导致记录写入失败

mysql max_allowed_packet 设置过小导致记录写入失败 mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES like '%max_allowed_packet%'; 显示的结果为: +--------------------+---------+ | Variable_name      | Value   | +--------

百度网盘下载东西显示本地文件写入失败的解决办法

  小编最近在使用百度网盘下载东西的时候,异常关机了一下,启动的时候,进行下载,就显示了本地文件写入失败的问题,下面小编为大家分享下,如何解决这个问题. 1.我们一般,可能会由于异常断点关机,或者硬盘重新拔插,导致本地文件写入失败. 2.遇到这种情况,首先我们重命名一下网盘上的文件,然后再次点击下载, 3.如果这种情况还不行的话,我们就使用下种方法,首先找到自己的安装文件,把百度网盘卸载. 4.卸载完成后,我们打开浏览器,找到百度网盘最新版本进行下载.安装. 5.下载完成点击安装,安装成功后,打

mysql中使用order by 和limit查询变慢解决办法

先来看一下测试性能  代码如下 复制代码 1.显示行 0 - 9 (10 总计, 查询花费 32.4894 秒)   2.SQL 查询: SELECT *   3.FROM tables   4.WHERE m_id   5.IN ( 50, 49 )   6.ORDER BY id DESC   7.LIMIT 10   显示行 0 - 9 (10 总计, 查询花费 32.4894 秒) SQL 查询: SELECT * FROM tables WHERE m_id IN ( 50, 49 )

ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享_实用技巧

在Global中  Application_Start 添加 如: 复制代码 代码如下: void Application_Start(object sender, EventArgs e)    {        //在应用程序启动时运行的代码        System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", System.Reflect

在Jsp程序读取或向DB写入数据乱码解决办法

js|程序|解决|数据 在Jsp程序读取或向DB写入数据乱码解决办法 在基于JAVA的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号.这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码,故会出现此问题.以前我也经常为这个问题而苦恼,后来经查了些资料,终于解决了,我知道一定有很多朋友也会碰到这个问题,所以特就总结了一下,来拿出来让大家一起分享了.1.在网页中输出中文.JAVA在网络传输中使用的编码是"ISO-8859

ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)_IOS

但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了.下面是解决办法: 首先在viewDidLoad方法加入以下代码: if(leftTable!.respondsToSelector("setLayoutMargins:")){ leftTable?.layoutMargins=UIEdgeInsetsZero } if(leftTable!.respondsToSelector("setSeparatorInset:&

mysql导入sql文件过大或连接超时的解决办法

原文:mysql导入sql文件过大或连接超时的解决办法      前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个神奇sql语句交给实施,只要导入出错就把如下语句执行就可以了.至今屡试不爽. set global max_allowed_packet=100 000 000; set global net_buffer_length=100000; SET GLOBAL interactive_timeout=28800 000; SET GLOBAL wait_timeout

求大神告知eclipse中关联library失败的解决办法

问题描述 求大神告知eclipse中关联library失败的解决办法 想实现一个Tab,想导入TabPageIndicartor的library,但老是错误,查了资料说是盘符错误,但还是不知道怎么操做,错误如图. 解决方案 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0522/1265.html 解决方案二: 谢谢回答.这个问题我已经解决了,只需要将library导入时,勾选将library文件同时复制到wordplace

JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

原文:JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法.   这2种方式都可以实现不用persistence.xml文件,免去每个Entity都要在persistence.xml文件中配置的烦恼,但是这种方式Entity实体类的主键字段注解@ID要放到 getXXX()方法上,否则不认.   方式1