2011-09-29 73 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;