电脑技术学习

Discuz! 4.1 的标准数据表遗失后的解决方法教程

dn001

如果出现像这样的数据错误 Error: Table 'discuz_cn.cdb_announcements' doesn't exist ,是指 cdb_announcements 的数据表遗失了,如果有备份数据的话就直接恢复,但如果没有的话可以使用以下的升级数据库来解决,不过凡事重建数据库的话,该数据表的资料将完全遗失,就好像这个例子这样论坛公告的所有资料将会遗失。重建数据表是最后的选择,请时常对您的论坛进行备份数据,以便出现错误时可以及时恢复。有关 Discuz! 标准的数据表可以在安装包里的 ./install/discuz.sql 里找到。
cdb_ 是默认的表名前缀,如果不同大家可以自行修改。

DROP TABLE IF EXISTS cdb_announcements;
CREATE TABLE cdb_announcements (
id smallint(6) unsigned NOT NULL auto_increment,
author varchar(15) NOT NULL default '',
`subject` varchar(250) NOT NULL default '',
displayorder tinyint(3) NOT NULL default '0',
starttime int(10) unsigned NOT NULL default '0',
endtime int(10) unsigned NOT NULL default '0',
message text NOT NULL,
PRIMARY KEY; (id),
KEY timespan (starttime,endtime)
) TYPE=MyISAM;
==================================================================================================

出现 Error 1054 : Unknown column 'poll' in 'field list' 的错误是指 cdb_threads 数据表里的 poll (Field)遗失了,可以使用以下的数据表来重新升级

ALTER TABLE `cdb_threads` ADD `poll` TINYINT(1) DEFAULT '0' NOT NULL;
有关的数据可以在安装包里的 ./install/discuz.sql 里找到。我们可以使用 Microsoft Windows 里的 Notepad ,然后再使用 Ctrl + F 的来进行寻找 poll 的数据。我们可以找到像以下的数据......


QUOTE:
DROP TABLE IF EXISTS cdb_threads;
CREATE TABLE cdb_threads (
tid mediumint(8) unsigned NOT NULL auto_increment,
fid smallint(6) unsigned NOT NULL default '0',
iconid smallint(6) unsigned NOT NULL default '0',
typeid smallint(6) unsigned NOT NULL default '0',
readperm tinyint(3) unsigned NOT NULL default '0',
price smallint(6) NOT NULL default '0',
author char(15) NOT NULL default '',
authorid mediumint(8) unsigned NOT NULL default '0',
`subject` char(80) NOT NULL default '',
dateline int(10) unsigned NOT NULL default '0',
lastpost int(10) unsigned NOT NULL default '0',
lastposter char(15) NOT NULL default '',
views int(10) unsigned NOT NULL default '0',
replies mediumint(8) unsigned NOT NULL default '0',
displayorder tinyint(1) NOT NULL default '0',
highlight tinyint(1) NOT NULL default '0',
digest tinyint(1) NOT NULL default '0',
rate tinyint(1) NOT NULL default '0',
blog tinyint(1) NOT NULL default '0',
poll tinyint(1) NOT NULL default '0',
attachment tinyint(1) NOT NULL default '0',
subscribed tinyint(1) NOT NULL,
moderated tinyint(1) NOT NULL default '0',
closed mediumint(8) unsigned NOT NULL default '0',
PRIMARY KEY; (tid),
KEY digest (digest),
KEY displayorder (fid,displayorder,lastpost),
KEY blog (blog,authorid,dateline),
KEY typeid (fid,typeid,displayorder,lastpost)
) TYPE=MyISAM;
找到 poll 后,我们可以看看原来是在 cdb_threads 数据表里的,然后就执行 ALTER TABLE `cdb_threads` ADD `poll` TINYINT(1) NOT NULL DEFAULT '0' ;

我可能解释到不是很清楚,但我已经是尽量用我的能力解释到清楚了。

标签: