Discuz论坛中的pre_home_feed数据表错误修复办法!

2018-10-31 2431 0条评论


我的Discuz论坛的pre_home_feed数据表错误,返回的错误信息类似”Table ‘.\home_feed’ is marked as crashed and last (automatic?) repair failed.” 通过discuz自带的tools工具修复不了,通过phpmyadmin修复出现数据表“使用中”。

[Type] 查询语句错误 

[144] Table ‘.\tuiguba\home_feed’ is marked as crashed and last (automatic?) repair failed 

[Query] SELECT * FROM home_feed WHERE uid=’92′ ORDER BY dateline DESC LIMIT 0,1 


利用dz后台的数据库检测工具检测了下说pre_home_feed()和pre_home_feed_app()字符集错误,不知道是不是他备份的时候讲数据库下的所有文件备份到本地,然后直接上传的缘故,如果利用phpmyadmin修复这个表可能会出现“使用中”这样的状况,到数据库目录查看会有.TMD后缀的文件出现,网上很多教程说通过.TMD改名然后恢复之类,其实没有必要,我是这样操作的:

- 停止数据库(必须要停止数据库),net stop mysql,我这个朋友是使用的lnmp集成包安装的环境,那么就是:/etc/init.d/mysql stop

- 删除数据库目录下的.TMD文件,如果你的服务器是linux,也可以使用如下的命令:rm -f /你的数据库目录/*.TMD

- 然后运行:myisamchk -r /你的数据库目录/*.MYI,修复进程会逐个表进行修复。

- 修复完成后启动数据库net start mysql,lnmp下应该是:/etc/init.d/mysql start


现在进phpmyadmin看看已经修复好了,如果你按照这个步骤操作不可行,那么建议你重建这两个表,当然如果你有备份,单独提取这两张表恢复进你的数据库也可以,不过这样操作需要一个额外的数据库来操作,我觉得因为这两个表是dz里家园动态的,清空这两个表的数据对于网站也没有什么大的损害,方法是在dz的后台-站长-数据库-升级里粘贴如下的数据库升级语句:

执行前最好先对比一下下面两个表的原理的字段

DROP TABLE IF EXISTS pre_home_feed;
CREATE TABLE pre_home_feed (
feedid int(10) unsigned NOT NULL AUTO_INCREMENT,
appid smallint(6) unsigned NOT NULL DEFAULT ’0′,
icon varchar(30) NOT NULL DEFAULT ”,
uid mediumint(8) unsigned NOT NULL DEFAULT ’0′,
username varchar(15) NOT NULL DEFAULT ”,
dateline int(10) unsigned NOT NULL DEFAULT ’0′,
friend tinyint(1) NOT NULL DEFAULT ’0′,
hash_template varchar(32) NOT NULL DEFAULT ”,
hash_data varchar(32) NOT NULL DEFAULT ”,
title_template text NOT NULL,
title_data text NOT NULL,
body_template text NOT NULL,
body_data text NOT NULL,
body_general text NOT NULL,
image_1 varchar(255) NOT NULL DEFAULT ”,
image_1_link varchar(255) NOT NULL DEFAULT ”,
image_2 varchar(255) NOT NULL DEFAULT ”,
image_2_link varchar(255) NOT NULL DEFAULT ”,
image_3 varchar(255) NOT NULL DEFAULT ”,
image_3_link varchar(255) NOT NULL DEFAULT ”,
image_4 varchar(255) NOT NULL DEFAULT ”,
image_4_link varchar(255) NOT NULL DEFAULT ”,
target_ids text NOT NULL,
id mediumint(8) unsigned NOT NULL DEFAULT ’0′,
idtype varchar(15) NOT NULL DEFAULT ”,
hot mediumint(8) unsigned NOT NULL DEFAULT ’0′,
PRIMARY KEY (feedid),
KEY uid (uid,dateline),
KEY dateline (dateline),
KEY hot (hot),
KEY id (id,idtype)
) TYPE=MyISAM;
DROP TABLE IF EXISTS pre_home_feed_app;
CREATE TABLE pre_home_feed_app (
feedid int(10) unsigned NOT NULL AUTO_INCREMENT,
appid smallint(6) unsigned NOT NULL DEFAULT ’0′,
icon varchar(30) NOT NULL DEFAULT ”,
uid mediumint(8) unsigned NOT NULL DEFAULT ’0′,
username varchar(15) NOT NULL DEFAULT ”,
dateline int(10) unsigned NOT NULL DEFAULT ’0′,
friend tinyint(1) NOT NULL DEFAULT ’0′,
hash_template varchar(32) NOT NULL DEFAULT ”,
hash_data varchar(32) NOT NULL DEFAULT ”,
title_template text NOT NULL,
title_data text NOT NULL,
body_template text NOT NULL,
body_data text NOT NULL,
body_general text NOT NULL,
image_1 varchar(255) NOT NULL DEFAULT ”,
image_1_link varchar(255) NOT NULL DEFAULT ”,
image_2 varchar(255) NOT NULL DEFAULT ”,
image_2_link varchar(255) NOT NULL DEFAULT ”,
image_3 varchar(255) NOT NULL DEFAULT ”,
image_3_link varchar(255) NOT NULL DEFAULT ”,
image_4 varchar(255) NOT NULL DEFAULT ”,
image_4_link varchar(255) NOT NULL DEFAULT ”,
target_ids text NOT NULL,
PRIMARY KEY (feedid),
KEY uid (uid,dateline),
KEY dateline (dateline)
) TYPE=MyISAM;

这样这两个表就不会有问题了。

文章版权及转载声明

本文作者:符文浩 网址:http://blog.fuwenhao.com/post/176.html 发布于 2018-10-31
文章转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:

评论列表 (暂无评论,2431人围观)参与讨论

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码