尝试在备份后重置人工智能时,“#1067-‘POST_DATE’的默认值无效”

时间:2017-04-18 作者:SinisterBeard

我已经从sql备份中恢复了Wordpress数据库。然而,在这样做的过程中,所有表都失去了自动递增功能。

当我尝试将其添加回sql时

ALTER TABLE `mercury_posts` CHANGE `ID` `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
我得到了错误#1067 - Invalid default value for \'post_date\'. 如何修复此问题?

5 个回复
SO网友:Carlos Faria

post\\u日期默认值为0000-00-00 00:00:00。如果像这样检查sql\\u mode变量:

show variables like \'sql_mode\'; 
。。。它将显示sql\\u 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

您必须再次设置sql\\u模式变量NO_ZERO_IN_DATE,NO_ZERO_DATE

因此,在上一个示例中,应如下设置sql\\u模式:

SET sql_mode = \'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\';
然后再次检查sql\\u模式变量,以确保其已正确更改:

show variables like \'sql_mode\';
然后限制消失了;D

在此处找到解决方案:https://stackoverflow.com/a/37696251/504910

SO网友:Cristian Cartes

您必须在SQL的顶部添加此代码

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

SO网友:SinisterBeard

我最终解决了这个问题,删除了故障数据库,再次从工作数据库中备份,但分别导出了结构和数据。

SO网友:Julius Barra

将sql\\u模式更改为

仅\\u FULL\\u GROUP\\u BY、STRICT\\u TRANS\\u TABLES、ERROR\\u FOR\\u DIVISION\\u BY\\u ZERO、NO\\u AUTO\\u CREATE\\u USER、NO\\u ENGINE\\u SUBSTITUTION

工作正常,但它只能持续到您重新启动sql server。

因此,如果您再次需要它,您必须再次更改sql\\U模式。

SO网友:Sumit Jangir

You can use following command to change your default post_date:-

  ALTER TABLE `wp_posts` 
  CHANGE `post_date` `post_date`  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

相关推荐

如何将WordPress配置为与Microsoft SQL Server数据库对话?

我们正在我们的intranet站点上构建WordPress站点,并希望将其连接到Microsoft SQL Server。我已经在IIS上下载并配置了PHP和PHP管理器。我还从键入此线程标题时弹出的已回答问题列表中下载了SQL Server DLL。我按照指示在PHP文件夹中下载了这些DLL。当我启动服务器地址以安装WordPress时,系统会提示我提供SQL DB名称、用户名、密码和DB主机名。我还下载了wp-db抽象插件,将wp-db抽象化。php文件放入WordPress文件保存的文件夹中,按照我