Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

解答:遇到数据库缺少字段和表怎么办?

[复制链接]
茄子 发表于 2006-12-15 14:30:29 | 显示全部楼层 |阅读模式
如果您遇到类似的报错提示:
Error: Table 'discuz.supe_ads' doesn't exist
Error: Unknown column 'f.allowblog' in 'where clause'


首先,请检查下论坛和SS/XS的config文件

其中的数据库信息是否填写正确,主要检查以下几点:

1)数据库用户名信息是否正确

$dbhost = 'localhost';
$dbuser = 'xxx';数据库用户名
$dbpw = 'xxx';数据库密码
$dbname = 'xxx';数据库名,以上信息不清楚请联系空间商

2)数据表的表名前缀是否正确

$tablepre = 'cdb_';  论坛表名前缀,默认一般都是cdb_
$stablepre = 'supe_';  ss/xs表名前缀,默认一般都是supe_

3)如果确认以上信息填写正确,请下载dbcheck检查数据库是否完整。

请按照要求讲dbcheck上传并运行
论坛dbcheck下载地址:https://discuz.dismall.com/viewthread.php?tid=129707
ss/xs的dbcheck下载地址:
XS2版本:https://discuz.dismall.com/viewthread.php?tid=448937
XS3版本:https://discuz.dismall.com/thread-705150-1-6.html
XS4版本:https://discuz.dismall.com/thread-811070-1-2.html
4)您会得到类似如此的反馈结果:

图1




图2



图3



根据图1,我们可以获取下面的信息:

supe_ads这个表缺少
supe_prefields这个表缺少

根据图2,我们可以获取下面几个信息:

其一:supe_categories这个表缺少字段 tpl、 thumb 、 image 、url 、 subcatid
其二:supe_categories这个表富余字段styldid、hash

根据图3,我们可以获取下面的信息:

supe_templatecontents这个表富余。

其中对于用dbcheck检测出来富余的表和字段就不用管了,他不会对您的程序运行造成影响,所以您可以自行决定是否删除。我们在这里就不讨论了

对于其他2个图的结果,如何处理呢?

首先看图1,其缺少supe_ads、supe_prefields这2个表
您可以用记事本打开install/supesite.sql,这里存放的都是SupeSite/X-Space的建表语句。
搜索supe_ads
可以看到这个表的建表语句:
  1. DROP TABLE IF EXISTS supe_ads;
  2. CREATE TABLE supe_ads (
  3.   adid smallint(6) unsigned NOT NULL auto_increment,
  4.   `subject` varchar(50) NOT NULL default '',
  5.   adtype enum('js','iframe','echo') NOT NULL default 'js',
  6.   dateline int(10) unsigned NOT NULL default '0',
  7.   width varchar(10) NOT NULL default '',
  8.   height varchar(10) NOT NULL default '',
  9.   clicks int(10) unsigned NOT NULL default '0',
  10.   adcontent text NOT NULL default '',
  11.   PRIMARY KEY  (adid)
  12. ) TYPE=MyISAM;
复制代码
直接将其复制并登陆论坛后台--系统工具--数据库--数据库升级中运行升级数据库即可
这样,您就将supe_ads这个缺少的表增加上了。

同时,还缺少supe_prefields表,同理,用记事本打开install/supesite.sql,搜索supe_prefields
可以看到这个表的建表语句:
  1. DROP TABLE IF EXISTS supe_prefields;
  2. CREATE TABLE supe_prefields (
  3.   id smallint(6) unsigned NOT NULL auto_increment,
  4.   `type` char(10) NOT NULL default '',
  5.   field char(20) NOT NULL default '',
  6.   `value` char(50) NOT NULL default '',
  7.   isdefault tinyint(1) NOT NULL default '0',
  8.   PRIMARY KEY  (id),
  9.   KEY `type` (`type`)
  10. ) TYPE=MyISAM;
  11. --
  12. -- 导出表中的数据 'supe_prefields'
  13. --
  14. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (1, 'blog', 'mood', '高兴', 1);
  15. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (2, 'blog', 'mood', '郁闷', 0);
  16. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (3, 'blog', 'mood', '平静', 0);
  17. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (4, 'blog', 'weather', '晴朗', 1);
  18. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (5, 'blog', 'weather', '阴雨', 0);
  19. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (6, 'blog', 'weather', '大风', 0);
  20. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (7, 'blog', 'weather', '热', 0);
  21. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (8, 'blog', 'weather', '冷', 0);
  22. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (9, 'blog', 'weather', '舒适', 0);
  23. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (10, 'file', 'filesizeunit', 'GB', 0);
  24. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (11, 'file', 'filesizeunit', 'MB', 1);
  25. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (12, 'file', 'filesizeunit', 'KB', 0);
  26. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (13, 'file', 'filesizeunit', 'B', 0);
  27. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (14, 'file', 'version', 'V1.0', 1);
  28. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (15, 'file', 'version', 'V2.0', 0);
  29. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (16, 'file', 'version', 'V3.0', 0);
  30. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (17, 'file', 'producer', '本站原创', 1);
  31. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (18, 'file', 'producer', '来源网络', 0);
  32. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (19, 'file', 'downfrom', '本地', 1);
  33. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (20, 'file', 'downfrom', '网络', 0);
  34. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (21, 'file', 'language', '简体中文', 1);
  35. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (22, 'file', 'language', '繁体中文', 0);
  36. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (23, 'file', 'language', 'english', 0);
  37. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (24, 'file', 'permission', '免费', 1);
  38. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (25, 'file', 'permission', '共享', 0);
  39. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (26, 'file', 'permission', '商业', 0);
  40. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (27, 'file', 'permission', '破解', 0);
  41. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (28, 'file', 'permission', '注册', 0);
  42. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (29, 'file', 'system', 'Win2000/WinXP', 0);
  43. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (30, 'file', 'system', 'Win9X/Win2000/WinXP', 1);
  44. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (31, 'file', 'system', 'Win9X', 0);
  45. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (32, 'file', 'system', 'Windows/Linux', 0);
  46. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (33, 'file', 'system', 'Unix/Linux', 0);
  47. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (34, 'news', 'newsauthor', 'webmaster', 1);
  48. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (35, 'news', 'newsauthor', 'admin', 0);
  49. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (36, 'news', 'newsfrom', '本站原创', 1);
  50. INSERT INTO supe_prefields (id, type, field, value, isdefault) VALUES (37, 'news', 'newsauthor', '网络转载', 0);
复制代码
注意:这个表比supe_ads表多了下面一截,是程序默认的一些数据,这个也不要丢了!!

同样,复制之后登陆论坛后台--系统工具--数据库--数据库升级中运行升级数据库即可


对于图2 的情况,这样操作:
同理用记事本打开install/supesite.sql,找到缺少字段的supe_categories表的建表语句
如下:
  1. --
  2. -- 表的结构 'supe_categories'
  3. --
  4. DROP TABLE IF EXISTS supe_categories;
  5. CREATE TABLE supe_categories (
  6.   catid smallint(6) unsigned NOT NULL auto_increment,
  7.   upid smallint(6) unsigned NOT NULL default '0',
  8.   name varchar(50) NOT NULL default '',
  9.   note text NOT NULL default '',
  10.   `type` varchar(15) NOT NULL default '',
  11.   ischannel tinyint(1) NOT NULL default '0',
  12.   displayorder mediumint(6) unsigned NOT NULL default '0',
  13.   tpl varchar(80) NOT NULL default '',
  14.   thumb varchar(150) NOT NULL default '',
  15.   image varchar(150) NOT NULL default '',
  16.   haveattach tinyint(1) NOT NULL default '0',
  17.   bbsmodel tinyint(1) NOT NULL default '0',
  18.   bbsurltype varchar(15) NOT NULL default '',
  19.   blockmodel tinyint(1) NOT NULL default '1',
  20.   blockparameter text NOT NULL default '',
  21.   blocktext text NOT NULL default '',
  22.   url varchar(200) NOT NULL default '',
  23.   subcatid varchar(200) NOT NULL default '',
  24.   PRIMARY KEY  (catid),
  25.   KEY `type` (`type`),
  26.   KEY upid (upid)
  27. ) TYPE=MyISAM;
复制代码
我们可以获取缺少的字段的属性信息:
  tpl varchar(80) NOT NULL default '',
  thumb varchar(150) NOT NULL default '',
  image varchar(150) NOT NULL default '',
  url varchar(200) NOT NULL default '',
  subcatid varchar(200) NOT NULL default '',


之后,我们需要开始为这些缺少的字段编写sql文,按照下面的格式:

ALTER TABLE 表名 ADD 字段属性信息;

这样,填空之后我们可以得到类似的sql升级语句:

ALTER TABLE supe_categories ADD ·tpl· varchar(80) NOT NULL default '';
ALTER TABLE supe_categories ADD ·thumb· varchar(150) NOT NULL default '';
ALTER TABLE supe_categories ADD ·image· varchar(150) NOT NULL default '';
ALTER TABLE supe_categories ADD ·url· varchar(200) NOT NULL default '';
ALTER TABLE supe_categories ADD ·subcatid· varchar(200) NOT NULL default '';

同理,登陆论坛后台--系统工具--数据库--数据库升级中运行升级数据库即可。
是不是很简单呢?
以后大家遇到类似的缺少字段或者表的情况,这样才处理就ok了~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
AgFx 发表于 2006-12-15 15:52:43 | 显示全部楼层
沙发支持~~!
回复

使用道具 举报

wuhaolong 发表于 2006-12-15 22:13:45 | 显示全部楼层
板凳+收藏................:)
回复

使用道具 举报

uoojoo 发表于 2006-12-16 04:34:47 | 显示全部楼层
EN      HOOHOO
回复

使用道具 举报

mayazhao 发表于 2006-12-31 17:43:12 | 显示全部楼层
我马上试一试,谢谢版主,马上回结果.
回复

使用道具 举报

mayazhao 发表于 2006-12-31 18:07:38 | 显示全部楼层
针对space1.0是不是无法检查数据库呀!
提示找不到配置文件
回复

使用道具 举报

lup2005 发表于 2007-1-2 21:12:13 | 显示全部楼层
我按照您的方法对缺少的字段其他的都修复了,就是在修复
ALTER TABLE supe_spacenews ADD nid mediumint(8) unsigned NOT NULL auto_increment;
不行,出现错误:升级错误,MySQL 提示: Incorrect table definition; there can be only one auto column and it must be defined as a key

不知是怎么回事,望指导!谢谢!
回复

使用道具 举报

taioner 发表于 2007-7-5 11:38:42 | 显示全部楼层
难度还真的有点高啊,晕了
回复

使用道具 举报

pc77maikongjian 发表于 2007-7-5 20:39:37 | 显示全部楼层
有需要的看看,不错!
回复

使用道具 举报

tomsina 发表于 2007-7-24 18:44:17 | 显示全部楼层
才发现这么个帖子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-24 04:00 , Processed in 0.027936 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表