【mysql】线上数据库sql文件导入本地错误的一种解决方案

将线上数据库的数据做备份,导出sql文件,转到本地数据库做测试。

其中一直报错“invalid default value for updated_at”

然后查看updated_at的默认值为0000 - 00 -00 00:00:00

网上搜寻到的错误可能是sql_mode为严格模式下,timestamp不能为0

命令行进入mysql,输入

show variables like 'sql_mode';
显示的内容应该包含有   NO_ZERO_DATE,  NO_ZERO_IN_DATE, 

_____________________________解决方案________________________________________________________

其中一种解决方式当然是把默认值改成非0或者把not null去掉,但是数据量太大了显然本地做测试没必要改sql文件


那么我们就把mysql的严格模式改一下吧:

1. 找到安装mysql的文件夹,找到my.ini配置文件

2.搜索 关键字‘ sql-mode ’(找前面没有; 或者 #注释符号的)

3.将sql-mode后面的   NO_ZERO_DATE,  NO_ZERO_IN_DATE, 两个字段删掉,然后保存文件

4.重启mysql(用wamp的就直接restart all services,其他方法安装mysql的就自行搜索怎么重启mysql服务吧)


在命令行中再次运行

show variables like 'sql_mode';
能够看到已经没了NO_ZERO_DATE,  NO_ZERO_IN_DATE,这两个字段了,这个时候就能正确导入你的sql到本地数据库了。

你可能感兴趣的:(个人随笔)