mysql sqlstate '02000'_导入 SQL 时出现 Invalid default value for 'create_time' 报错解决方法...

问题描述

十三在 GitHub 仓库中开源了一个 Spring Boot 技术栈开发的 My-Blog 项目:

AAffA0nNPuCLAAAAAElFTkSuQmCC

因为功能比较多,数据的存储就选择了 MySQL 数据库,该项目的表结构也放到了仓库中,方便大家运行和使用这个开源博客项目,期间一直有人提到题目中的这个问题,在导入 SQL 语句到 MySQL 数据库中的时候会报如下错误: Invalid default value for ‘create_time’ ,错误截图如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

由于不止一个朋友在群里或者仓库里给我提这个问题,因此今天就整理一下解决方案。

方案一

重装 MySQL 数据库,版本选择 5.7 或者 5.7 以上版本,这个方案有些粗暴,不喜欢粗暴的朋友可以继续往下看。

AAffA0nNPuCLAAAAAElFTkSuQmCC

方案二

这个错误的主要原因,是因为给了时间字段的列默认值一个 CURRENT_TIMESTAMP 默认值,而这个默认值在低版本的 MySQL 中是不支持的,因此就出现了题目中的这个报错,所以呢,把每个时间字段的默认值修改一下即可,比如:

DROP TABLE IF EXISTS `tb_config`;

CREATE TABLE `tb_config` (

`config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置项的名称',

`config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置项的值',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',

PRIMARY KEY (`config_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

改为

DROP TABLE IF EXISTS `tb_config`;

CREATE TABLE `tb_config` (

`config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置项的名称',

`config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置项的值',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

`update_time` datetime DEFAULT NULL COMMENT '修改时间',

PRIMARY KEY (`config_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

就齐活了。

当然,也有错误示范,比如我让别人改默认值,有个小老弟就改成了如下这个样子:

AAffA0nNPuCLAAAAAElFTkSuQmCC

希望大家不要犯同样的错误。

方案三

以上两种方案大家应该都看的懂,为了防止某些小老弟太秀,SQL 语句都不会改,又有了第三个方案,表结构开源了,字段大家应该也都清楚,如果不会执行 SQL 语句,那你就自己创建表,把字段一个个的创建了,这种方式也是可以滴。

AAffA0nNPuCLAAAAAElFTkSuQmCC

一个一个的把字段名称和类型设置进去就可以了。

总结

好的,这次的问题答疑就到此结束啦,如果写成这样还是没解决你的问题,我建议你换一个项目学学,我真的太难了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值