Drupal安装PDOException

时间:2011-09-29 00:50:00

标签: php drupal drupal-6

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' => '',
    ),
  ),
);

怎么办?

5 个答案:

答案 0 :(得分:9)

这恰好发生在我身上。我手动将数据库信息添加到settings.php并尝试通过访问http://localhost/mysubdirectory来运行安装脚本,而不是通过安装脚本添加db info。 Drupal看到了db信息并认为它已经安装,因此它查找了Drupal表,找不到它们并抛出错误。

我的解决方案就是手动运行脚本(导航到http://localhost/mysubdirectory/install.php)。希望这可以帮助!

答案 1 :(得分:3)

很多时候只是卸载并再次尝试可以修复这样的错误。安装可能有问题,也许你给它提供了一些不正确的信息。

答案 2 :(得分:1)

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;

答案 3 :(得分:0)

尝试读取未找到的表。

如果安装新模块,请尝试重新安装此模块,或将其删除。但是如果你没有安装任何东西,你需要重新安装所有drupal :(

答案 4 :(得分:0)

此问题与您的mysql数据库类型有关。如果您将站点移动到另一台服务器,可能您的数据库类型不匹配并使用InnoDB。因此,您必须使用此命令更改数据库表的类型。

ALTER TABLE **table_name** ENGINE = MyISAM;