26

尝试将 WordPress 转换为多站点设置时,出现错误:

建立数据库连接时出错

我在带有 WAMP 服务器的 Windows 7 上使用 WordPress 3.7.1。

wp-config.php

define('WP_ALLOW_MULTISITE', true ); 
define('SUBDOMAIN_INSTALL', false); 
define('DOMAIN_CURRENT_SITE', 'localhost');
define('PATH_CURRENT_SITE', '/wordpress_test4/');
define('SITE_ID_CURRENT_SITE', 1); 
define('BLOG_ID_CURRENT_SITE', 1);

.htaccess

RewriteEngine On 
RewriteBase /wordpress_test4/ 
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin 
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^ - [L] 
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] 
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] 
RewriteRule . index.php [L]
4

12 回答 12

65

您需要添加到您的wp-config.php

define('MULTISITE', true);

我有同样的问题。我跳过了这一行,因为我已经define('WP_ALLOW_MULTISITE', true);在我的 wp-config 中,它看起来和我一样。

于 2014-01-26T20:33:19.040 回答
39

遇到同样的问题,找到了3种可能的解决方案:

  1. 确保:DB_NAMEDB_USERDB_PASSWORDDB_HOST在您的 wp-config.php 中确实是预期的。

  2. 正如Dima L. 之前提到的,define('MULTISITE', true);也是意料之中的。

  3. 但是为我解决的*是为 WordPress 设置多站点,将wp_blogs表格的列更改path为我网站的未定义位置。我将其更改为/并重新建立了数据库连接。

于 2014-02-22T20:03:22.977 回答
16

因为这个问题,我挣扎了很久。终于找到了解决办法。

您不应该在 wp-config.php 文件中一次添加所有这些设置。按照此处描述的确切步骤操作:http: //codex.wordpress.org/Create_A_Network

仅添加以下代码作为第一步:

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );

然后刷新你的页面。之后,在您的管理面板中转到工具 -> 网络设置并选择您的子站点设置。

其余的,只需使用上面链接中的说明。

祝你好运!

于 2016-06-03T21:45:57.620 回答
7

我最近有一个奇怪的遭遇。在设置了在不同域下运行的开发服务器并将多站点设置移至该服务器后,我得到了相同的错误“建立数据库连接时出错”。我检查了所有 wp_options 表在各自的设置中是否具有正确的域,并且我的数据库连接具有正确的凭据并且可以在正常范围内工作。

我找到了一种获得更好错误报告的方法。我在functions.php 中的函数dead_db() 中添加了数据库对象的输出,然后显示它在wp_blogs 表中找不到我的站点的任何博客。我只是忘记更新此表中测试服务器的域。

function dead_db() {
  global $wpdb;

  echo "<pre>";
  print_r($wpdb);
  echo "</pre>";

  wp_load_translations_early();

希望对某人有所帮助:)

于 2016-08-25T00:59:46.253 回答
4

DOMAIN_CURRENT_SITE的输入wp-config.phpdefine('DOMAIN_CURRENT_SITE', 'www.example.com');

http://在 wp_blogs -> 域中删除解决了我的问题。

于 2016-05-14T20:48:59.173 回答
3

我添加了$base = '/'; 进入配置,解决了这个问题。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'mydomain.com');
$base = '/';
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
于 2014-12-25T07:49:25.793 回答
2

如果您已获取多站点的整个数据库转储,则必须更改域名以匹配下表中的 localhost 域:

  1. wp_blogs [更新域字段]
  2. wp_options [站点网址和主页]
  3. wp_site [域字段]

对于多站点,在 config.php 上定义 WP_HOME 和 WP_SITEURL 将不起作用。

理想情况下,在导入 DB 转储之前,如果您有 .sql 文件,您可以搜索所有域并将其替换为您自己的 localhost 域。

以上这些步骤对我有用。

于 2021-07-15T18:33:56.777 回答
1

除了上述所有内容之外,如果使用多站点环境,请检查以下内容:在各个子目录(/home/subsitename)中,每个(子)站点都存在单独的 wp-config.php 和 .htaccess 文件,所以上面必须在所有这些文件中调整提到的参数。例如,我的主站点工作正常,因为我 /home 目录中的这些文件正常,但是当我尝试访问我的子站点时,我一直收到数据库连接错误消息,直到我也调整了这些文件。

于 2014-11-08T11:54:20.747 回答
1

受萨宾回答的启发,我检查wp_blogs并发现该domain值仍然指向错误的域(我正在将多站点移动到开发服务器)。运行UPDATE wp_blogs SET domain='example.com';解决了我的问题(请注意,我使用的是子文件夹多站点,而不是子域 - 不要盲目地运行该 SQL!)

于 2015-08-06T17:51:37.003 回答
1

将多站点从子目录移动到根目录后,我遇到了问题。

为我解决这个问题的部分原因是 Sabin Chirila 提到的:

  1. 确保:wp-config.php 中的 DB_NAME、DB_USER、DB_PASSWORD 和 DB_HOST 确实是预期的。
  2. 正如 Dima L. 之前提到的,define('MULTISITE', true); 也是意料之中的。
  3. 将“wp_blogs”表的“路径”列更改为“/”,重新建立数据库连接。

但我不得不改变更多的东西。

  1. 为了能够查看前端,我还必须将“wp_site”表的“路径”列更改为“/”
  2. 然后(在主题二十七孩子)我不得不在后端重新配置一些配置设置,因为它们没有被考虑在内。但这很简单,因为数据仍然存在。
于 2017-08-26T19:38:51.160 回答
1

如果您正在运行 WHM/cPanel 并且您已经检查过是否添加了MULTISITE/WP_ALLOW_MULTISITE常量,那么您可能会遇到虚拟主机问题。

如果您遇到数据库错误,很可能您的名称服务器或 A 记录是正确的。否则,您的域将不会通过数据库连接指向您的服务器。但是,您可能已经忘记或错过了cPanel 别名中的域名。

只需前往 cPanel,搜索“别名”并在“创建新别名”下输入您缺少的域名。

您还可以通过登录 WHM、搜索“列出帐户”、搜索您想要的帐户并单击 CP 图标来访问 cPanel。

于 2017-11-08T23:05:27.613 回答
0

这是我修复它的方法

配置设置

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'localhost' );
define( 'PATH_CURRENT_SITE', '/myblog/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

然后在数据库表中(使用 phpmyadmin 找到)wp_blogs 将根博客的值(应该是 lie/number 1)设置为

domain localhost
root /myblog/

最后 - 重置选项表中的 Sitrurl 和主页(再次使用 phpmyadmin 找到)以

 http://localhost/myblog/
于 2014-02-24T12:49:26.843 回答