创建表查询给我“表不存在”错误


Create table query gives me "table does not exists" error

我的本地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).

然后我用谷歌搜索了如何解决此错误,发现我将不得不创建一个表。所以我触发了一个查询来创建表:

CREATE TABLE IF NOT EXISTS `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...';`

但令我惊讶的是,它给出了以下错误:(drupal722是我的数据库名称)

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

现在,我有两个问题:

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

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

顺便说一句,我已经在这里问过这个问题 drupal.stackexchange.com 但没有取得丰硕的成果所以我在这里再次问。

在 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...';`

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

许多drupal用户遇到此问题,请查看此 https://drupal.org/node/1308308 链接,它可能会对您有所帮助。

尝试只删除设置.php文件并复制过去的默认设置.php文件并使用setting重命名.php文件,然后尝试访问站点。