MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00‘ for column
最佳答案 问答题库1038位专家为你答疑解惑
使用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
CHANGEc10
c10
VARCHAR(100) NULL
这时进行数据更新,将‘0000-00-00’ 替换为正常的日期字符串,在使用ALTER 命令修改表字段,这时表中的字段会自动转为日期类型,字段中不能有非法字符,也可以在VarChar类型时将字段设为NULL再将字段改回日期类型。经过验证此方法不会丢失字段的值。这个方法对于系统影响最小,需要的系统权限也最小。
99%的人还看了
相似问题
- django ModelSerializer自定义显示字段
- 替换sql,某个字段特定容
- Java之反射获取和赋值字段
- java mybatisplus generator 修改字段类型
- 使用用户代理字段进行浏览器检测(判断页面运行环境)
- js数组操作——对象数组根据某个相同的字段分组
- spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()
- 【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】
- mysql取出组内按照某时间最新一条数据的其他字段
- 基于geotools24.0的创建自动增长主键id字段的方法
猜你感兴趣
版权申明
本文"MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00‘ for column":http://eshow365.cn/6-38473-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 红黑树-RBTree
- 下一篇: postman上传照片,视频,音频等上传文件操作测试方法