一、问题描述
数据库升级到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。即可解决。
文章评论(0)