mysql升级到5.7了,wordpress导数据报错 [Err] 1067 - Invalid default value for 'access_date'
最近把mysql升级到5.7了,wordpress导数据报错
[Err] 1067 - Invalid default value for 'access_date'
Invalid default value for 'comment_date'
原因出在类似这样的语句
-- ----------------------------
-- Table structure for cms_portal_site_access_pages
-- ----------------------------
DROP TABLE IF EXISTS `cms_portal_site_access_pages`;
CREATE TABLE `cms_portal_site_access_pages` (
`access_pages_id` int(11) NOT NULL AUTO_INCREMENT,
`access_page` varchar(255) NOT NULL COMMENT '访问页面',
`session_id` varchar(32) NOT NULL,
`access_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '访问日期',
`access_time` time NOT NULL COMMENT '访问时间',
`visit_second` int(11) NOT NULL DEFAULT '0' COMMENT '停留时长(秒)',
`page_index` int(11) NOT NULL DEFAULT '0' COMMENT '用户访问页面的索引',
`site_id` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`access_pages_id`)
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8 COMMENT='访问详细页面表';
这种报错多是你mysql升级到5.7而引起的默认值不兼容的问题。看看你的字段名是什么,我的是时间字段,类型是datetime。想到可能是类型的默认值被限制了,查看 sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0
查看 sql_mode
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.00 sec) mysql>
临时修改:
mysql> set session -> sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>
linux永久修改:
可以直接修改my.cnf文件
例如: vim /etc/my.cnf
在[mysqld]下面添加如下列:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
ok问题解决,现在你导入或者创建表时看看!
--------------------------------------------------------------------------------------------------------------
windows永久修改:
修改方法同样,寻找的配置文件名和目录不同
如当前目录为mysql安装目录C:\Program Files\MySQL\MySQL Server 5.7
复制一份my-default.ini文件,命名为my.ini
修改最下面配置的为这个
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
保存后,重启mysql即可
--------------------------------------------------------------------------------------------------------------