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的主要内容,如果未能解决你的问题,请参考以下文章

drupal简单安装和插件安装

Drupal 8 不安装日期模块

Drupal 8.2.4安装简体中文步骤

Drupal - 错误安装模块“实体”

Drupal 安装 PDOException

Drupal 7 安装失败 OSX 小牛 MAMP