将一个很大数据库文件插入到本地数据库时,碰到如下错误,
mysql server has gone away insert into
Variable ‘time_zone’ can’t be set to the value of ‘NULL’
其实两个错误都是因为一个问题引起,就是 mysql 的 max_allowed_packet。
快速解决这个问题的步骤如下:
1、使用终端登录到 mysql
mysql -u root -p
2、接着查看max_allowed_packet
的值。
show VARIABLES like 'max_allowed_packet';
3、假设值为67108864
,换算成 M。
select 67108864/1024/1024;
最后得到的值就是 max_allowed_packet
,引起上面问题的原因是这个值太小了。一般是在插入数据库文件时,数据库文件太大,而这个值太小了。
所以要将它设大点,快速解决的方法是临时设置,而不是去文件设置。
4、为max_allowed_packet
设置一个值,最好比你的数据库文件要大,比如 500M,实在不行就设置成 1024M。
set global max_allowed_packet = 1024 * 1024 * 500;
5、如果不放心,设置完用这个命令查看数值是否发生变化。
show global VARIABLES like 'max_allowed_packet';
6、再就没问题了,但这种设置只是临时性的,只要mysql
重启,这个值又变回原来的。
本文由老郭种树原创,转载请注明:https://guozh.net/mysql-server-has-gone-away/