原文网址:MySQL--解决Navicat导入的报错:[Err] 1067 - Invalid default value for ‘xxx‘_IT利刃出鞘的博客-CSDN博客
简介
本文介绍如何解决Navicat导入的报错:[Err] 1067 - Invalid default value for ‘xxx‘
问题复现
用Navicat导出SQL,再导入同一个MySQL服务器,竟然报错。
其语句如下:
DROP TABLE IF EXISTS `mt_account_log`;
CREATE TABLE `mt_account_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`target_id` int(11) NOT NULL DEFAULT '0' COMMENT '目标id,type决定',
`amount` decimal(16,6) NOT NULL DEFAULT '0.000000' COMMENT '金额',
`note` varchar(45) NOT NULL COMMENT '流水说明',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '1-正常,0-无效',
`total_amount` decimal(16,6) DEFAULT '0.000000',
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=32255 DEFAULT CHARSET=utf8;
其中create_time这个字段出现这样的错误:“[Err] 1067 - Invalid default value for 'create_time'”
原因分析
create_time类型为timestamp类型,对应日期范围为:1970-01-01 00:00:01 ~ 2037-12-31 23:59:5,因为导入的表字段update_time默认值不在该区间内,所以报错。
问题解决
建表语句的DEFAULT删掉,或者修改为CURRENT_TIMESTAMP。
彻底解决
如果导出的是整个数据库,全部都改的话太麻烦了!正确的做法见如下网址:MySQL--彻底解决Navicat导入导出时的报错_IT利刃出鞘的博客-CSDN博客