最近往mysql中导入一个2M多的数据db.sql,由于.sql 文件不是自己写的,在win下用mysql命令行客户端导入时一直提示错误
开始导入一直崩溃:MySQL server has gone away
查找网上资料在my.ini中添加:max_allowed_packet = 10M 顺利解决
继续导入,又提示
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '95鏋夎垂闈掓槬婕?',374,'757','2010-10-' at line 1
错误提示单引号附近有问题,但是我查看文档发现这地方的单引号已经用反斜杠转义了,应该不会有问题,为了调试过去我索性把单引号删除,测试还是不行,
error:incorrect string value:'\xB1250\xE9\x83...' for column 'good_name' at row 1.
我查看.sql文件的编码格式是utf-8,没有问题,我建表的时候指定字符格式是utf-8,
突然想到刚才因为在客户端插入中文数据,执行了set names gbk;
马上设置成utf-8 :set names utf8
重新导入:source c:/db.sql
顺利通过
总结:
1.在导入或执行一个过大SQL语句是,相应的max_allowed_packet参数应增大
2.导入数据时,数据文件编码要和数据表编码、mysql客户端编码一致