【问题标题】:Create table query gives me "table does not exists" error创建表查询给我“表不存在”错误
【发布时间】:2013-11-15 12:16:51
【问题描述】:

我的本​​地 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 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...';`

但问题仍然存在。这个查询的错误也是一样的......

【问题讨论】:

  • 你能创建其他表吗?尝试使用简单的 CREATE TABLE ... 语句(没有 IF NOT EXISTS 部分)。然后做一个SHOW TABLES。你有什么吗?
  • 告诉我你的操作系统...
  • 您连接的是哪个用户?也许用户没有执行CREATE语句所需的权限?
  • @RobertRozas: Windows
  • @EliasVanOotegem:如果用户没有权限,那么错误应该是不同的。你不这么认为吗?

标签: php mysql database drupal-7 innodb


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2016-10-31
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2014-11-12
    相关资源
    最近更新 更多