Navicat导出再导入时,出现invalid default
我说从linux服务器转存的sql文件,在本地运行时发生这样的错误,我就很烦啊,各种百度,我气得就一个一个的表执行sql语句,其中建表的sql语句是这样的:
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 '流水说明',
`type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '资金流水类型;0=>''消费'',1=>''充值'', 2=>''返现'',3=>''返佣'',4=>''提现'',5=>''签到'',6=>''平台赠送'' 请参考配置ACCOUNT_LOG',
`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 CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP 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'”
我就纳闷,同样的数据库管理工具,导出来导进去报了30多万的错误,100多张表就导进去两张,你说气不气!!!
通过问题,大家可以看到create_time字段的类型是datetime,在navicat中执行的时候就报错,然后百度到说是mysql5.6之前的版本不支持datetime类型,就下载了mysql5.6安装后,数据表全部导进去了!!!问题就解决了。
一、在Navicat中新建查询,执行 select version(); 查看你的mysql版本,如果是低版本去官方下载mysql5.6版本或者更高的版本都行;
二、在你安装的phpstudy中mysql目录下的文件清理干净(一定要备份你之前羡慕的数据库!!!);
三、https://dev.mysql.com/downloads/mysql/5.6.html#downloads 官方地址,根据自己电脑配置下载,解压到phpstudy中mysql目录下
然后复制my-default.ini,改成my.ini,修改配置路径
basedir = D:\phpStudy\MySQL
datadir = D:\phpStudy\MySQL\data
四、以管理员运行cmd,cd到../phpStudy\MySQL\bin,执行 mysqld -install ,显示如图这就成功了
五、重启phpstudy,然后右键-》mysql工具-》重置密码