mysql5.7 datetime 默认值0000-00-00 00:00:00出错
admin
2023-05-20 06:22:39
0

mysql5.7 datetime 默认值0000-00-00 00:00:00出错

实验环境:MySQL 5.7.17

使用wordpress的表wp_posts

mysql > CREATE TABLE `wp_posts` (
    ->   `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    ->   `post_author` bigint(20) unsigned NOT NULL DEFAULT '0',
    ->   `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `post_content` longtext NOT NULL,
    ->   `post_title` text NOT NULL,
    ->   `post_excerpt` text NOT NULL,
    ->   `post_status` varchar(20) NOT NULL DEFAULT 'publish',
    ->   `comment_status` varchar(20) NOT NULL DEFAULT 'open',
    ->   `ping_status` varchar(20) NOT NULL DEFAULT 'open',
    ->   `post_password` varchar(20) NOT NULL DEFAULT '',
    ->   `post_name` varchar(200) NOT NULL DEFAULT '',
    ->   `to_ping` text NOT NULL,
    ->   `pinged` text NOT NULL,
    ->   `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    ->   `post_content_filtered` longtext NOT NULL,
    ->   `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
    ->   `guid` varchar(255) NOT NULL DEFAULT '',
    ->   `menu_order` int(11) NOT NULL DEFAULT '0',
    ->   `post_type` varchar(20) NOT NULL DEFAULT 'post',
    ->   `post_mime_type` varchar(100) NOT NULL DEFAULT '',
    ->   `comment_count` bigint(20) NOT NULL DEFAULT '0',
    ->   PRIMARY KEY (`ID`),
    ->   KEY `post_name` (`post_name`(191)),
    ->   KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
    ->   KEY `post_parent` (`post_parent`),
    ->   KEY `post_author` (`post_author`)
    -> ) ENGINE=innodb AUTO_INCREMENT=536 DEFAULT CHARSET=utf8;
ERROR 1067 (42000): Invalid default value for 'post_date'


出现以上问题:是因为mysql5.7版本后,sql_mode参数被设置了NO_ZERO_IN_DATE,NO_ZERO_DATE

mysql > show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)


解决方法:

方法一:临时修改方法

mysql> set global  sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' ;
mysql> set session  sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' ;


方法二:永久修改方法,需要重启mysql服务:修改mysql的配置文件my.cnf,添加以下参数

 sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION //实际是去除NO_ZERO_IN_DATE,NO_ZERO_DATE

 

方法三:修改datetime的默认值

 



相关内容

热门资讯

特朗普称如果伊朗不迅速行动,“... 新华社华盛顿5月17日电(记者徐剑梅 黄强)美国总统特朗普17日在社交媒体发文称,如果伊朗不迅速行动...
柳州5.2级地震致楼房倒塌,店... 据中国地震台网消息,5月18日00时21分在广西柳州市柳南区发生5.2级地震,震源深度8千米。有网友...
“华南第一商圈”再升级!全国首... 5月16日,“万兆AI惠商,联通美好未来”2026年517电信日暨中国联通品牌与产品广东宣传推广会在...
原创 3... 如果今年618你手里预算在3000多元,又特别看重拍照,我反而不建议只盯着那些刚发布、热度很高的新机...
苹果首款折叠屏iPhone U... 快科技5月17日消息,今年4月曾有消息称,苹果首款折叠屏手机iPhoneUltra(iPhone F...
广西柳州发生5.2级地震,南宁... 据中国地震台网正式测定,5月18日0时21分在广西柳州市柳南区发生5.2级地震,震源深度8公里,震中...
购药新规落地!多地药房称买“减... 5月17日消息,近日有消息称,自5月15日起,司美格鲁肽、替尔泊肽等GLP-1药物均需要凭有效期内的...
苹果深夜“放价”:iPhone... 来源:环球网 【环球网科技综合报道】5月15日消息,苹果在深夜毫无预警地打响了一轮价格战,iPho...
原创 从... 进入2026年5月下旬,手机圈即将迎来全年最密集的新品发布窗口。 从今天开始到7月下旬,短短两个月时...
全钢实验台厂家梳理 医疗/科研... 导语:实验室设备选型需兼顾功能适配性与长期稳定性。基于2026年实验室建设行业白皮书及公开市场数据,...