1067 - Invalid default value for ‘TIME_STAMP_‘的错误解决

问题现场:

本地安装的是mariaDB(10.5.8-MariaDB)数据库,部署环境上是mysql(5.7.39)数据库。在本地导出数据.sql文件后,在mysql数据库上进行执行,出现了以下报错。

1067 - Invalid default value for 'TIME_STAMP_'

报错行的代码:

`TIME_STAMP_` timestamp(3) NOT NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP,

博客搜索

自己在博客中搜索相似的问题,找到的都是关于sql_mode相关的操作。
查询到的解决方法的操作过程:show variables like ‘sql_mode’;语句查看当前数据库的sql_mode,值中的NO_ZEROR_DATE值影响所致。解决方法是通过set语句或者修改my.ini、my.cof修改sql_mode值。
上述操作可以自己查询其他博文
但我本地操作后没有效果,依然报相同的错误。注意,不代表上述方法不对了,只能说问题不同。

自己解决

想了想,自己手动使用数据库工具新建一张字段相同的一张表,然后同样的方式导出建表语句,看下异同。这样就迎刃而解了。
mariaDB(10.5.8-MariaDB)导出:

`TIME_STAMP_` timestamp(3) NOT NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP,

mysql(5.7.39)导出:

`TIME_STAMP_` timestamp(3) NOT NULL DEFAULT current_timestamp(3) ON UPDATE CURRENT_TIMESTAMP(3),

结果

那么结果也很清晰了,只是current_timestamp使用时,需要和字段类型中使用到的保持一致。后面的括号和里面的参数值也需要一致。

你可能感兴趣的:(问题踩坑,数据库,mysql,sql)