问题背景
原数据是从mysql5.5库中导出的脚本,然后导进mysql8.0库中的数据,由于一些原因,我要把数据库的名字a改为b,但是navicat上不能改数据库名字,我就只能新建一个数据库b,然后把数据库a里的数据通过navicat的数据传输进数据库b中,在传输过程中遇到以下错误:
Incorrect datetime value: '0000-00-00 00:00:00' for column 'out_end_date' in table 'xxx'
MySQL报incorrect datetime value '0000-00-00 00:00:00' for column错误原因,是由于在MySQL5.7版本以上,默认设置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_DATE,存在表示系统里DATE类型字段不能有0值,所以在执行insert、update 操作时会报此错误。
解决方案
由于我是传输整个数据库,不可能一张表一张表的去改,那么如何解决有以下几个思路:
方案1.
使用命令查询 sql_mode,然后修改sql_mode的值,这种方式mysql重启后会失效。
SELECT @@sql_mode;
show variables like 'sql_mode';
strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no