返回顶部
首页 > 资讯 > 数据库 >解决MySQL报错incorrect datetime value '0000-00-00 00:00:00' for column
  • 167
分享到

解决MySQL报错incorrect datetime value '0000-00-00 00:00:00' for column

incorrectdatetimevaluemysql报错incorrect 2023-08-11 10:08:15 167人浏览 八月长安
摘要

目录使用navicat导入数据时报错:解决方案总结使用navicat导入数据时报错: Mysql 报错 incorrect datetime value ‘0000-00-00 00:00:00’

使用navicat导入数据时报错:

Mysql 报错 incorrect datetime value ‘0000-00-00 00:00:00’ for column

这是因为当前的mysql不支持datetime为0的情况。

Mysql报incorrect datetime value ‘0000-00-00 00:00:00’ for column错误原因,是由于在MySQL5.7版本以上,默认设置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_DATE,存在表示系统里DATE类型字段不能有0值,所以在执行操作时会报此错误。

解决方案

1、如果具备系统权限那么直接修改my.ini 配置文件,找到sql_mode行,修改为如下重启MySQL即可;如果没有sql_mode行,在my.ini的[mysqld]下添加如下重启MySQL即可:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISioN_BY_ZERO,NO_ENGINE_SUBSTITUTION

2、在没有系统权限,我们有本地库权限情况下如何处理,我们可以使用

SELECT @@sql_mode;

就可以查到当前系统的SQL_mode配置,发现配置里有NO_ZERO_DATE,NO_ZERO_IN_DATE,这时我们使用以下命令,临时设置SQLmode模式,它只对本次会话有效,如果系统刷新后就需要我们重新设置。

SET @@sql_mode = ‘STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';

3、还有办法,不需要更改系统的SQL_mode模式,可以修改表结构,即将表中的date/datetime字段临时修改为VarChar字段

ALTER TABLE mytemp CHANGE c10 c10 VARCHAR(100) NULL

这时进行数据更新,将‘0000-00-00’ 替换为正常的日期字符串,在使用ALTER 命令修改表字段,这时表中的字段会自动转为日期类型,字段中不能有非法字符,也可以在VarChar类型时将字段设为NULL再将字段改回日期类型。经过验证此方法不会丢失字段的值。这个方法对于系统影响最小,需要的系统权限也最小。

总结

到此这篇关于解决MySQL报错incorrect datetime value '0000-00-00 00:00:00' for column的文章就介绍到这了,更多相关MySQL报错incorrect datetime value内容请搜索编程网(www.cppcns.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.cppcns.com)!

您可能感兴趣的文档:

--结束END--

本文标题: 解决MySQL报错incorrect datetime value '0000-00-00 00:00:00' for column

本文链接: https://lsjlt.com/news/368738.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作