Loading... 如果你的数据库是mysql, 如果你创建表或插入数据时遇到的BUG--它长这样: **Invalid datetime format: 1292 Incorrect datetime value: '' for column 'xxx' at row 1** 或 **1067 - 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; ``` 最后修改:2023 年 11 月 28 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
你的文章内容非常用心,让人感动。 http://www.55baobei.com/BDaI1Rm0sm.html