我有一个本地 Drupal 6 实例,昨天运行良好。但今天,我尝试访问我的网站,我们称之为http://测试站点.local. 每一页,包括http://testsite.local/用户,我收到此错误:
网站离线 由于技术问题,该网站目前无法使用。请稍后重试。感谢您的理解。
如果您是本网站的维护者,请检查 settings.php 文件中的数据库设置,并确保托管服务提供商的数据库服务器正在运行。如需更多帮助,请参阅手册或联系托管服务提供商。
请注意,这里没有 MySQL 错误。我找到的只有一个页面没有此错误:http://testsite.local/install.php。该页面确实包含一条错误消息:
无法连接到您的 MySQL 数据库服务器。MySQL 报告以下消息:连接被拒绝。
- 您确定您的用户名和密码正确吗?
- 您确定输入了正确的数据库主机名吗?
- 您确定数据库服务器正在运行吗?
如需更多帮助,请参阅安装和升级手册。如果您不确定这些术语的含义,您可能应该联系您的托管服务提供商。
但是,我的其他本地站点在同一个数据库上运行良好,我可以使用命令行连接到数据库。我很确定我也拥有正确的权限,因为过去一切都正常:
$ mysql --host=localhost --user=testuser --password=testpassword testdb
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.11-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW GRANTS FOR CURRENT_USER();
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for testuser@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testuser'@'localhost' IDENTIFIED BY PASSWORD 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `testdb`.* TO 'testuser'@'localhost' |
+-------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.03 sec)
我settings.php
使用相同的凭据:
$db_url = 'mysqli://testuser:testpassword@localhost/testdb';
我不知道哪里出了问题。请帮忙!
答案1
您需要仔细检查您的服务器是否确实正在使用该settings.php
文件。
如果您在 Linux 环境中工作,则可以使用find
或。locate
您还可以尝试重命名或移动配置文件到另一个位置,看看错误消息是否改变。
此类错误很可能是配置错误。
答案2
检查目录sites
。造成这种情况的一个常见原因可能是目录结构应该如下所示:
sites/
default/
settings.php
somedomain.com -> default
但是它被签入到一个无脑的 SCCS(并通过无脑的客户端签出并返回),使得它将符号链接视为另一个目录,所以现在你有:
sites/
default/
settings.php
somedomain.com/
settings.php
当然,您可能只会更改default/settings.php
,因为当您不运行多站点时,这是唯一合理的更改。也就是说,真实的这里的解决方案不是修复其他 settings.php 或修复符号链接,而是简单地删除“somedomain.com”;它不会向您的配置添加任何内容。
我还见过另一种情况:一个非常非常大(500 行左右)的 settings.php 实际上有二 $db_url
里面有。当然,第二个“赢了”。谈谈你不认为要寻找的东西!
答案3
尝试:'mysqladmin flush-hosts'。还要检查您的 mysql 用户权限。也许您不允许访问该数据库?还要检查这些服务器之间的防火墙。