admin管理员组

文章数量:1612058

昨天被这个报错整的死去活来,网上搜索问题结果大多有以下几种情况:

1.MySQL版本低于5.7。 但是我的MySQL版本是5.7。

2.找到MySQL下载路径中的my.ini文件,中对sql_mode进行修改

        sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

        或者网络上出现的其他优秀答案。

        我的修改后还是报错。而且我原有的sql_mode就没有限制时间默认值……

很好,于是乎我去求救大佬朋友们,大佬A用cmd直接写sql语句解决,证明我的MySQL是能创建默认值为CURRENT_TIMESTAMP的时间字段的,然后大佬B说他前几天也遇到过类似的问题,最后解决思路是用后端去处理这个创建当前时间。

既然cmd能写出来,那么Navicat一定也可以,一觉睡醒我又来钻牛角尖了,仔细回放了Navicat的学习视频,我华生发现了盲点:

        第一步:新建连接、新建数据库。

        第二步:新建表,新建主键字段,随便其他字段,还有主人公create_time字段(类型timestamp或datatime都行)。重点来了,不要修改它默认值,它默认值为空白或是null都不要理睬。然后点击保存

        第三步:右键,设计表,点击create_time字段,修改默认值为CURRENT_TIMESTAMP,根据当前时间戳更新不要点勾,点击保存。没!有!报!错!

        第四步:欢呼。

遇到报错的很大原因,我猜测是在新建表时就修改了默认值为CURRENT_TIMESTAMP,然后Navicat建表语句不符合 默认值为CURRENT_TIMESTAMP 的规范,然后就会报1064的错误,定位到你create_time那行。

总之问题解决了,皆大欢喜。最后感谢大佬A和大佬B的帮助~

        补充:sql语句(只是为了测试create_time字段)

                CREATE TABLE `gy`.`Untitled`  (
                    `id` int(20) NOT NULL COMMENT 'id',
                    `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP, 

                    PRIMARY KEY (`id`)
                );

本文标签: 报错字段值为Navicatcreatetime