MySQL数据库SQLSTATE[22007]: Invalid datetime format 日期类型不能为空值的解决办法

如果你的数据库是mysql,

如果你创建表或插入数据时遇到的BUG--它长这样: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'xxx' at row 11067 - Invalid default value for 'xx'

那么我将赐予你 两套剑法:

(一)追魂夺命剑:修改sql_mode参数值

七十二路"追魂夺命剑",此剑法快似闪电、迅捷无比,更兼招数精奇;"着"的一声刺中小怪sql_mode,小怪即便使出生平绝技"STRICT_TRANS_TABLES",也会被剑击中咽喉,大叫一声摔倒见阎王,招数之快令人难以想象。

sql 复制代码
SELECT @@sql_mode;
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

set sql_mode ='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

重启mysql服务后小怪诈尸了,又使出"STRICT_TRANS_TABLES",需要到改配置文件一劳永逸

mysql 复制代码
# 改变/etc/my.cnf(windows修改my.ini),重启mysql服务
[mysqld]
sql_mode = ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

(二)玄铁重剑:使用NULL替代0000-00-00 00:00:00/0000-00-00

用了重剑后,越是平平无奇的剑招,越是威力极大。但它还是有招式,还差那么一丁点到无招的境界,而且剑法也必须配合重剑使用才行。

sql 复制代码
ALTER TABLE active_log MODIFY COLUMN start_date datetime NULL;

建表SQL

sql 复制代码
DROP TABLE IF EXISTS `active_log`;

CREATE TABLE `active_log` (
  `id` bigint(11) unsigned NOT NULL auto_increment,
  `start_date` datetime NOT NULL default '0000-00-00 00:00:00' COMMENT '活动开始时间',
   created_date DATE DEFAULT '0000-00-00',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
相关推荐
roman_日积跬步-终至千里20 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科20 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦20 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总20 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
晚霞的不甘21 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
市场部需要一个软件开发岗位1 天前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
海奥华21 天前
mysql索引
数据库·mysql
2601_949593651 天前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
javachen__1 天前
mysql新老项目版本选择
数据库·mysql
Dxy12393102161 天前
MySQL如何高效查询表数据量:从基础到进阶的优化指南
数据库·mysql