mysql 默认时间错误,mysql5.7 datetime 默认值0000-00-00 00:00:00出错

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

实验环境:MySQL 5.7.17

使用wordpress的表wp_postsmysql > 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_DATEmysql > 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的默认值

原文:http://corasql.blog.51cto.com/5908329/1913178

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值