Drupal 安装 PDOException
Posted
技术标签:
【中文标题】Drupal 安装 PDOException【英文标题】:Drupal Installation PDOException 【发布时间】:2011-11-27 07:43:54 【问题描述】:http://localhost
有问题:
PDOException: SQLSTATE[42S02]: 未找到基表或视图:1146 表 'drupal_test.semaphore' 不存在:SELECT expire, value FROM semaphore WHERE name = :name; lock_may_be_available() 中的数组( [:name] => variable_init )(/var/www/drupal/includes/lock.inc 的第 165 行)。
这是我的数据库配置:
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupal_test',
'username' => 'root',
'password' => 'XXX',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
怎么办?
【问题讨论】:
【参考方案1】:这只是发生在我身上。我手动将数据库信息添加到 settings.php 并尝试通过访问http://localhost/mysubdirectory
来运行安装脚本,而不是通过安装脚本添加数据库信息。 Drupal 看到了 db 信息,认为它已经安装,所以它寻找它的 Drupal 表,找不到它们,并抛出错误。
我的解决方案是手动运行脚本(导航到http://localhost/mysubdirectory/install.php
)。希望这可以帮助!
【讨论】:
当我运行 install.php 我得到“表变量已经存在。” 您手动运行 install.php 的建议为我节省了一天的时间...非常感谢。【参考方案2】:很多时候只需卸载并重试即可修复此类错误。可能是安装有问题,也许你给了它一些不正确的信息。
【讨论】:
【参考方案3】:semaphore
是核心表,用于保存不能作为 Drupal 变量存储的信号量、锁、标志等,因为它们不能被缓存。在某些版本更新(6.xx-6.yy)中它丢失了,所以只需创建它:
CREATE TABLE IF NOT EXISTS `semaphore` (
`name` varchar(255) NOT NULL DEFAULT '',
`value` varchar(255) NOT NULL DEFAULT '',
`expire` double NOT NULL,
PRIMARY KEY (`name`),
KEY `expire` (`expire`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
【讨论】:
【参考方案4】:它尝试读取的表没有找到。
如果您安装了新模块,请尝试重新安装此模块,或将其移除。但是如果你不安装任何东西,你需要重新安装所有的drupal :(
【讨论】:
【参考方案5】:这个问题与你的mysql数据库类型有关。如果您将站点移动到另一台服务器,则可能您的数据库类型不匹配并使用 InnoDB。因此,您必须使用此命令更改数据库表的类型。
ALTER TABLE **table_name** ENGINE = MyISAM;
【讨论】:
以上是关于Drupal 安装 PDOException的主要内容,如果未能解决你的问题,请参考以下文章