【发布时间】: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
现在,我有两个大问题:
为什么
Create table查询给我“表不存在”错误。很明显,我知道该表不存在,所以我想创建表,所以我正在触发Create table的查询。如何解决上述与 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