很多站长突然发现自己的站打开报错 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,粘贴建表语句,点执行即可。