MySQL导入数据出错的解决办法

作者: 潘羿 来源: 无主界 编辑: 4月13日
所属分类:网站相关

最近笔者在折腾MySQL的时候出现些问题,在备份结构与数据时,导出简单轻松没什么问题,但将导出的数据再导入时,会出现如下表无法创建的情况。

MySQL导入数据出错的解决办法

问题复现

一开始,笔者很自然的觉得是在导出数据库时出现了问题,但几次导出并导入均无法顺利导入,而且奇怪的情况是每次导出导入时出错的表还不同。

遇到这种令人头大的问题时,笔者觉得可能是遇到MySQL的bug了。这就比较尴尬了,如果是MySQL的bug所致,那么短时间内恐怕是没什么办法修改更换MySQL了。

不过好在笔者发现之前在导出数据时均是选择的是数据+结构,而笔者在仅备份数据时却没有遇到这样的问题。于是,笔者就懂了,笔者打开了导出的数据,仔细研究了一下出错的表的的特征,笔者发现了下面一些不正常的数据:

MySQL导入数据出错的解决办法

如果对MySQL有一定研究的小伙伴一定会想到原因,没错sql_mode的严格模式。是这么回事,如果设置了严格模式,MySQL就无法插入0值的日期和时间,也就是NO_ZERO_IN_DATE、NO_ZERO_DATE产生的效果,由于导出的数据含有值为0的日期和时间,所以自然也就没法成功导入了。

解决办法

解决办法非常简单,在MySQL的配置文件中加入以下一行:

sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

如果不知道是否处于严格模式可以运行以下命令查询:

show variables like 'sql_mode';

是不是很简单。。

潘羿

您必须登录才能发表评论~