WordPress站点突然间所有评论消失,而且无法进行评论的解决办法

我先把我的问题描述一下:
我的个人博客是使用Wordpress建的站点,站点架设在阿里云ECS服务器上.

昨天早上的时候还是好好的,可以正常评论,审核,然后到了晚上一个同学突然告诉我评论被挂了,界面显示WordPress站点遇到了致命错误.
我感到纳闷,因为我并没有对我的站点做什么大的改动,按理说不可能发生这样的情况.于是今天,我自己去看了看,确实如此,之前所有的评论都没有了,而且无法发送新的评论.

这种感觉真是很难受啊,不明不白地.于是乎第一节课下了,回宿舍赶紧操作.虽然是一头雾水,没有什么思路,搞了很久乃至饭都没吃,对象视频电话也没打,但是我想今天就把它给解决掉,不然复习都复习不进去.

直到下午四点半终于弄好了!很是开心!图为我最后一次测试成功,(但是之前所有的评论都没有了,后来恢复备份又回来了)

一些我踩过的坑我就不说了,直接进入最重要的步骤:

我们知道wordpress数据库默认建有12个表格,如下图:

我记得很清楚的就是有一个数据表是wp_comments,它是用来储存评论信息的.
因为在我刚用博客的时候,我曾经让室友都给我评论,然后我登陆数据库查看这个wp_comments数据表,看看它们发的评论都同步上来了没有.所以我印象比较深刻.

当我进入phpMyadmin准备看看wordpress数据库时候,我很快就发现没有了wp_comments这个数据表.
我的第一反应是可能被SQL注入了,因为这学期刚学这些东西,所以我以为就是黑客通过网站的评论功能,构建一些攻击性的sql语句,然后将我的wp_comments数据表给删掉,这是很有可能的.

但是我比较笨啊,也不知道怎么查看数据库的日志文件,想看看发生了什么操作,如果真是有人通过sql注入删掉了我数据库里面的信息,那么看看能不能再恢复回来.结果网络上搜不到教程,所以这条路堵死了.

之后呢,我就想着,没办法了,赶紧恢复备份吧.大不了把文章重新发一遍.但是,令人惊讶的是,备份也失败了!
报错:Invalid default value for ‘comment_date’.

看到这里,我想,这果然是和wp_comments这个数据表有关.
然后,我就想既然这个表没有了,那么我就再创建一个新的表吧,只要字段,属性什么都相同就好了,虽然会丢掉站点以前的评论(必然丢了呢,因为这个表已经被删掉了,恢复过来很困难).
于是我上网搜了挺久,找到的都是只知道基本的信息,如下图:

没办法,有总比没有强,先试试吧.于是我利用phpMyadmin进行数据表的创建,不知道的属性都不填.
最后把表信息填好了,结果现实很残酷,最后发现还是报错:Invalid default value for ‘comment_date’.

这句话的意思就是:'comment_date’的默认值无效.
所以说我们自行创建的表还是没有解决掉这个问题.那么可不可能是MySQL自身出现了问题呢?
很戏剧,答案就是如此,和之前我遇到的一个问题一样:VSCode升级了C++ extensions之后,突然运行之后没有任何反应.事后发现就是插件升级之后没做好兼容,根本就不是我们自己导致的错误.

大家一定要看一下这篇参考文章:感谢大佬!

同样发现是mysql的问题了,以前我使用的mysql5.6, 前不久刚升级到5.7.
报错信息:Invalid default value for ‘comment_date’
原因出在类似这样的语句,这是MySQL升级时自动执行的命令.所以有一点数据库基础的都能够看懂,如果存在wp_comments这个数据表,那么先把它删掉,之后呢,再次创建一个新的表格.
问题就出在这里,因为5.6版本升级成为5.7版本后,引起的默认值不兼容的问题。comment_date字段, 类型是datetime,想到可能是类型的默认值被限制了, 查看 sql_mode。

 `comment_date` datetime(0) NOT NULL DEFAULT '0000-00-00 00:00:00',
 `comment_date_gmt` datetime(0) NOT NULL DEFAULT '0000-00-00 00:00:00',

果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0.
所以创建表格这一步就无法成功,但是删除表格这一步已经做了!

真正认识到问题之后,解决起来就很轻松了:

永久修改:

1.直接修改my.cnf文件.(这是MySQL的配置文件):

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

2.重启MySQL服务

 /bin/systemctl restart mysqld.service

3.在phpMyadmin控制面板中执行用于创建表的SQL语句:

DROP TABLE IF EXISTS `wp_comments`;
CREATE TABLE `wp_comments`  (
  `comment_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `comment_post_ID` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  `comment_author` tinytext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `comment_author_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `comment_author_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `comment_author_IP` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `comment_date` datetime(0) NOT NULL DEFAULT '0000-00-00 00:00:00',
  `comment_date_gmt` datetime(0) NOT NULL DEFAULT '0000-00-00 00:00:00',
  `comment_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `comment_karma` int(11) NOT NULL DEFAULT 0,
  `comment_approved` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '1',
  `comment_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `comment_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `comment_parent` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  `user_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`comment_ID`) USING BTREE,
  INDEX `comment_post_ID`(`comment_post_ID`) USING BTREE,
  INDEX `comment_approved_date_gmt`(`comment_approved`, `comment_date_gmt`) USING BTREE,
  INDEX `comment_date_gmt`(`comment_date_gmt`) USING BTREE,
  INDEX `comment_parent`(`comment_parent`) USING BTREE,
  INDEX `comment_author_email`(`comment_author_email`(10)) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci ROW_FORMAT = Dynamic;

最后可以看到,表格成功创建.

如果没有修改my.cnf文件就创建表格的话,仍旧会报错:Invalid default value for ‘comment_date’.
切记,修改之后重启MySQL服务.

最后建议大家备份网站,而且建议大家使用必应搜索,效率很高,相关度也令人满意.另一个浏览器我就不说了,我要吐了.
切记,修改之后重启MySQL服务.

最后建议大家备份网站,而且建议大家使用必应搜索,效率很高,相关度也令人满意.另一个浏览器我就不说了,我要吐了.
那么到这里问题就完全解决了.如果你觉得本文对你的问题有帮助的话,可以为我点一个赞和关注.更可以访问我的个人博客乔治的编程小屋,相信我们遇到过很多一样的问题,也相信我的博客能够对你有一点点帮助.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值