⼀招解决MySQL5.7⽇期格式默认值0000-00-0000:00:00设置报错Inva。。mysql下载配置
由于在开发编码阶段会出现⼤量的空指针问题,为了减少处理空指针逻辑代码的冗余,在数据库设计阶段会给予表中字段的默认值。
⽇期默认值也是如此,往往也可以设置默认值为0000-00-00 00:00:00,如下:
报错:
由于MySQL默认设置中不⽀持⽇期datetime格式下的0000-00-00 00:00:00,⽽在创建表的时候会报出如下错误:1067 - Invalid default value for 'login_time' (“登录时间”的默认值⽆效。)
问题解决:
这个问题就出在了MySQL的配置中,因为MySQL5.7不允许datetime类型设置为0000-00-00 00:00:00
我们可以查询MySQL的配置数据库:sql_mode
select @@sql_mode;
查询结果如下⼀串字符串:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_ USER,NO_ENGINE_SUBSTITUTION
然⽽我们发现这⼀串字符串中的NO_ZERO_IN_DATE,NO_ZERO_DATE这两个配置限制了MySQL中datetime默认值为0,为了解决此问题,我们选择删除掉配置中的这个两个字符串。
删除配置:
⽅法1: 通过执⾏sql语句更改设置,执⾏以下sql语句修改MySQL中配置的数据库
SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENG INE_SUBSTITUTION';
⽅法2: 修改磁盘中MySQL的配置⽂件my.ini,在[mysqld]标签下添加如下信息后,重启MySQL服务。最后重新创建表即可创建成功! (推荐)
sql_mode=ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
恭喜你!问题得到了完美解决~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。