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' => '',
),
),
);
怎么办?
答案 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;