解决MySQL8导入SQL文件报日期错误问题`calendar_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'

2024-07-29   阅读:174   类型:后端   分类:Mysql    标签: Mysql

一、问题描述

数据库升级到MySQL8.0.28以上,导入备份的数据库文件,报日期时间错误,wordpress导数据报错1067的问题

数据库数据表创建代码如下:

DROP TABLE IF EXISTS `wp_booking_dates_props`;
CREATE TABLE `wp_booking_dates_props` (
 `booking_dates_prop_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
 `resource_id` bigint NOT NULL DEFAULT 1,
 `calendar_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `prop_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
 `prop_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NULL,
 PRIMARY KEY (`booking_dates_prop_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci ROW_FORMAT = Dynamic;

二、查找问题

show variables like 'sql_mode';

果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0

三、问题原因

MySQL5.7以后,datetime 时间类型的默认值被限制了,不能为0

四、问题解决

1、Linux下,修改my.cnf,加入如下配置

[mysqld]
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

2、windows系统下找到my,ini文件,加入如下配置

[mysqld]
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

可以看到是移除了 NO_ZERO_IN_DATE,NO_ZERO_DATE两个配置,最后重启MySQL。即可解决。

【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/1115.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×