今天通过MySQLdump导出数据,在目标机器上开个screen执行source导入数据。过一会看了下,发现居然导入报错了。报错提示如下:
刚开始还以为是sql_mode设置的问题,改了sql_mode为宽松模式,再次导入还是报错。
网上查了下,MySQL恢复数据库时出现如下错误:
ERROR 1231 (42000): Variable ‘time_zone’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘sql_mode’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘foreign_key_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘unique_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘character_set_client’ can’t be set to the value of ‘NULL’
Query OK, 0 rows affected (0.00 sec)
解决方式:
mysql> set global max_allowed_packet=1000000000;
mysql> source ./my_db.sql;
-----------------------------------------------------------------------------------
set global max_allowed_packet=524288000; 设置为512MB
退出mysql,然后再登进去source即可。
究其原因,是因为之前安装的这个mysql,什么参数都没有修改,用的默认配置,各种参数都设置的比较小。我们还要根据自己业务场景和硬件配置完善下/etc/my.cnf。不然下次还会遇到这个问题。