2011-09-29 71 views
3

http://localhost得到问题:Drupal安装PDOException

PDOException:SQLSTATE [42S02]:基表或视图未找到:1146表 'drupal_test.semaphore' 不存在:SELECT到期,值FROM {旗语} WHERE name =:name; Array([:name] => variable_init)在lock_may_be_available()(/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' => '', 
    ), 
), 
); 

怎么办?

回答

3

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

0

它尝试读取表未找到。

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

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; 
9

这只是发生在我身上我手动添加数据库信息的settings.php并试图运行安装脚本通过访问http://localhost/mysubdirectory,而不是通过安装脚本添加数据库信息。Drupal看到数据库信息,并认为它已安装,所以它查找它的Drupal表,找不到它们,并抛出错误。

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

+0

作品!!谢谢! – Neil

+0

当我运行install.php我得到“表变量已经存在。” –

+1

你的建议手动运行install.php已经救了我的一天...感谢一堆。 –

0

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

ALTER TABLE **table_name** ENGINE = MyISAM;