返回列表

[Discuz!] 表不存在的解决方法

很多站长突然发现自己的站打开报错1146,就不知道该怎么办了,最常见的报错表是以下2个:
[1146] Table 'sqla1212142518.common_session' doesn't exist
[1146] Table 'sqlshou277.common_cron' doesn't exist

其实你认不认识这些英语没关系,只要知道大概什么意思就行,下面我解释下:
Table:数据表。
sqla1212142518 /sqlshou277:这2个是数据库名,一般就是自己的数据库,记住在单引号开头的是数据库名就行。
common_session/common_cron:这2个是数据表,也就是需要重建的表。
doesn't exist:不存在。如果不认识这2个单词可以使用在线翻译

知道这些了就容易了,哪个表不存在就重建哪个,当然这2个表里没有重要数据,重建就行,如果是member或者post表不存在那就得恢复数据了,否则就会导致没有会员或者帖子。

首先下载和自己论坛版本对应的标准程序,解压之后,打开\upload\install\data\install.sql的文件。CTRL+F搜索报错的表名common_session。找到建表语句,如:

  1. DROP TABLE IF EXISTS pre_common_session;
  2. CREATE TABLE pre_common_session (
  3.   sid char(6) NOT NULL DEFAULT '',
  4.   ip1 tinyint(3) unsigned NOT NULL DEFAULT '0',
  5.   ip2 tinyint(3) unsigned NOT NULL DEFAULT '0',
  6.   ip3 tinyint(3) unsigned NOT NULL DEFAULT '0',
  7.   ip4 tinyint(3) unsigned NOT NULL DEFAULT '0',
  8.   uid mediumint(8) unsigned NOT NULL DEFAULT '0',
  9.   username char(15) NOT NULL DEFAULT '',
  10.   groupid smallint(6) unsigned NOT NULL DEFAULT '0',
  11.   invisible tinyint(1) NOT NULL DEFAULT '0',
  12.   `action` tinyint(1) unsigned NOT NULL DEFAULT '0',
  13.   lastactivity int(10) unsigned NOT NULL DEFAULT '0',
  14.   lastolupdate int(10) unsigned NOT NULL DEFAULT '0',
  15.   fid mediumint(8) unsigned NOT NULL DEFAULT '0',
  16.   tid mediumint(8) unsigned NOT NULL DEFAULT '0',
  17.   UNIQUE KEY sid (sid),
  18.   KEY uid (uid)
  19. ) TYPE=HEAP;
复制代码





其实第一行可以不要,不过无所谓,这句代码的意思是如果这个表存在则删除,反正已经没有了。


注意:如果你的表前缀不是默认的pre_,那么需要把建表语句的pre_替换成你正在用的表前缀。
复制建表语句,进入phpmyadmin,随便点一个表,点击SQL,粘贴建表语句,点执行即可。








返回列表