报错如下:

90440046944c6d8b790b4160631c8fdd.png

ERROR 1231 (42000): Variable ‘time_zone’ can’t be set to the value of ‘NULL’

常见于使用source执行sql文件

MySQL server has gone away

常见于外部导入sql文件,如看到该报错应先查看sql文件大小是否超过max_allowed_packet,如不超过,则再排查其他原因

报错原因

常见于mysql数据库中执行source导入太大的sql文件的情况,原因是由于执行的sql文件过大,超过max_allowed_packet的值导致失败。

如果是使用备份进行数据库回滚或修复出现此问题,建议主库备份时就分库备份或使用xtrabackup备份,也可从mysqldump备份出的大sql文件中,筛出单个库或者单个表进行恢复(方法如下:)

https://blog.csdn.net/GX_1_11_real/article/details/85263863

解决方法

修改max_allowed_packet的值

如不设置此参数,通常默认为4M

max_allowed_packet 最大值是1G(1073741824) 设置超过1G,最终结果也只有1G

方法一:临时修改

<1>查看当前max_allowed_packet的值

show variables like 'max_allowed_packet';

b89d18e8bd48d9ec91ea85e025d564ff.png

select @@max_allowed_packet;

de5f5b0745f10886219b3b2550c322f3.png

<2>数据库中临时修改(重启数据库后失效)

下列演示的是20M的设置,可根据需求设置,要大于执行的sql文件大小

不直接使用set global max_allowed_packet=20M的原因是:命令行进行修改时,通常要算成字节数设置

set global max_allowed_packet = 20 * 1024 * 1024;

or

set global max_allowed_packet = 2 * 1024 * 1024 * 10;

exit退出数据库,再重新进入,即可生效

方法二:持久化修改

<1>修改该数据库配置文件

通常是/etc/my.cnf,根据实际情况修改配置文件

下列演示的是20M的设置,可根据需求设置

vim /etc/my.cnf

[mysqld]

max_allowed_packet = 1024M

或者

max_allowed_packet = 1G

<2>重启数据库

根据安装方法不同,重启方法不同,通常为下列命令

service mysql restart

systemctl restart mysql

<3>进入数据库后,查看是否生效

show variables like 'max_allowed_packet';

b89d18e8bd48d9ec91ea85e025d564ff.png

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐