程序员php知识总结

Navicat导出再导入时,出现invalid default

2018-06-19  本文已影响13人  响呼雷

我说从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工具-》重置密码

上一篇下一篇

猜你喜欢

热点阅读