2013-11-15 28 views
0

我的本地Drupal网站已崩溃。创建表查询给我“表不存在”错误

这是错误:
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'drupal722.semaphore' doesn't exist: SELECT expire, value FROM {semaphore} WHERE name = :name; Array ([:name] => variable_init) in lock_may_be_available() (line 167 of D:\Projects\wamp\www\drupal\includes\lock.inc).

Uncaught exception thrown in shutdown function. PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'drupal722.semaphore' doesn't exist: DELETE FROM {semaphore} WHERE (value = :db_condition_placeholder_0) ; Array ([:db_condition_placeholder_0] => 573260675528605a31630a6.23576489) in lock_release_all() (line 269 of D:\Projects\wamp\www\drupal\includes\lock.inc).

我随后在google如何解决这个错误,我发现我必须创建一个表。所以我开了查询来创建表:

但出乎我的意料,这是给下面的错误:(drupal722是我的数据库名)

#1146 - Table 'drupal722.semaphore' doesn't exist

现在,我有两个问题:

  1. 为什么Create table查询正在给我“表不存在”的错误。很明显,我知道表不存在,所以我想创建表,所以我发射了Create table的查询。

  2. 如何解决上述与Drupal相关的错误让我的网站恢复工作?

BTW,我已经问上drupal.stackexchange.com here这个问题,但没有了丰硕的成果,所以我再次问在这里。

上drupal.stackexchange.com张贴问题以及具有几个人在那里讨论之后,我已经尝试下面的查询:

CREATE TABLE `semaphore` (
    `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique name.', 
    `value` varchar(255) NOT NULL DEFAULT '' COMMENT 'A value for the semaphore.', 
    `expire` double NOT NULL COMMENT 'A Unix timestamp with microseconds indicating when the semaphore should expire.', 
    PRIMARY KEY (`name`), 
    KEY `value` (`value`), 
    KEY `expire` (`expire`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Table for holding semaphores, locks, flags, etc. that...';` 

,但问题仍然存在。错误也与此查询相同...

+0

你能够创建其他表吗?尝试使用简单的“CREATE TABLE ...”语句(不包含“IF NOT EXISTS”部分)。然后做一个'SHOW TABLES'。你有什么东西吗? –

+0

告诉我有关您的操作系统的信息... – Hackerman

+0

您与哪个用户连接?也许用户没有执行'CREATE'语句所需的权限? –

回答

0

很多drupal用户都遇到这个问题,请检查这https://drupal.org/node/1308308链接它可能会帮助你。

尝试只删除setting.php文件并复制过去default.setting.php文件并用settting.php文件重命名,然后尝试访问网站。