本地主机中的WordPress Multisite“建立数据库连接时出错”

WordPress Multisite “Error establishing a database connection” in localhost

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

Error establishing a database connection

我正在Windows 7和WAMP服务器上使用WordPress 3.7.1。

wp-config.php

1
2
3
4
5
6
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

1
2
3
4
5
6
7
8
9
10
11
12
13
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]


您需要添加到wp-config.php中:

1
define('MULTISITE', true);

我有同样的问题。我跳过了这一行,因为我的wp-config中已经有define('WP_ALLOW_MULTISITE', true);,对我来说也一样。


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

  • 确保:wp-config.php中的DB_NAME,DB_USER,DB_PASSWORD和DB_HOST确实是期望值。

  • 正如Dima L.之前提到的,define('MULTISITE',true);也是预期的。

  • (为我解决了什么)为wordpress设置了多站点,将" wp_blogs"表的"路径"列更改为我的网站的未定义位置。我将其更改为" /",并重新建立了数据库连接。


  • 由于这个问题,我挣扎了很长时间。终于找到了解决方案。

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

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

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

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

    对于其余的内容,只需使用上面链接中的说明即可。

    祝好运!


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

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

    1
    2
    3
    4
    5
    6
    function dead_db() {
      global $wpdb;

      echo"[cc]";
      print_r($wpdb);
      echo"

    ";

    wp_load_translations_early();

    希望能帮助到某人:)


    我在wp-config.php中的DOMAIN_CURRENT_SITE已定义('DOMAIN_CURRENT_SITE','www.example.com');

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


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

    1
    2
    3
    4
    5
    6
    7
    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);

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

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

    只需转到cPanel,搜索"别名",然后在"创建新别名"下键入您缺少的域名。

    您还可以通过登录WHM,搜索"列表帐户",搜索所需的帐户并单击CP图标来进入cPanel。


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

    对我来说解决问题的部分原因是Sabin Chirila提到的内容:

  • 确保:wp-config.php中的DB_NAME,DB_USER,DB_PASSWORD和DB_HOST确实是期望值。
  • 正如Dima L.之前提到的,define('MULTISITE',true);也是预期的。
  • 将" wp_blogs"表的"路径"列更改为" /",并重新建立数据库连接。
  • 但是我不得不改变一些东西。

  • 为了能够查看前端,我还必须将" wp_site"表的列" path"更改为" /"
  • 然后(在主题为"二十七个孩子"中),我不得不在后端重新配置一些配置设置,因为没有考虑到它们。但这很简单,因为数据仍然存在。

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


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


    这是我固定的方法

    配置设置

    1
    2
    3
    4
    5
    6
    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)的值设置为

    1
    2
    domain localhost
    root /myblog/

    最后-重置options表中的sitrurl和主页(再次使用phpmyadmin找到)

    1
     http://localhost/myblog/