Wordpress Multisite "Ошибка установления соединения с базой данных" в локальном хосте

При попытке конвертировать WordPress в настройку Multisite я получаю сообщение об ошибке:

Ошибка при установлении соединения с базой данных

Я использую WordPress 3.7.1 в Windows 7 с сервером WAMP.

сор-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]

Ответ 1

Вам нужно добавить в свой wp-config.php:

define('MULTISITE', true);

У меня была та же проблема. Я пропустил эту строку, потому что у меня уже была define('WP_ALLOW_MULTISITE', true); в моей wp-config, и она выглядела одинаково.

Ответ 2

Имел ту же проблему, нашел 3 возможных решения:

  • Убедитесь, что DB_NAME, DB_USER, DB_PASSWORD и DB_HOST в вашем wp-config.php действительно ожидаются.

  • Как упоминал ранее Дима Л., define ('MULTISITE', true), также ожидается.

  • (что разрешило это для меня). Создав многостраничный сайт для Wordpress, изменив столбец "wp_blogs" таблицы "путь" на undefined для моего сайта. Я изменил его на "/", и соединение DB было восстановлено.

Ответ 3

Я долго боролся из-за этой проблемы. И наконец нашел решение.

Вы не должны добавлять все эти параметры сразу в файл wp-config.php. Следуйте инструкциям, описанным здесь: http://codex.wordpress.org/Create_A_Network

В качестве первого шага добавьте только следующий код:

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

И затем обновите страницу. После этого в панели администрирования перейдите в Сервис → Настройка сети и выберите настройки своего сайта.

Для остальных просто используйте инструкции из приведенной выше ссылки.

Удачи!

Ответ 4

У меня была странная встреча совсем недавно. После настройки dev-сервера, который работает под другим доменом и переместил в него многоуровневую настройку, я получил ту же ошибку "Ошибка при установлении соединения с базой данных". Я проверил, что все таблицы wp_options имеют правильные домены в соответствующих настройках и что мое соединение с базой данных имеет правильные учетные данные и будет работать в нормальных окружениях.

Я нашел способ получить лучшую отчетность об ошибках. Я добавил вывод объекта базы данных в функцию dead_db() в функции .php, который затем показал мне, что он не может найти блоги для моего сайта в таблице wp_blogs. Я просто забыл обновить домены для тестового сервера в этой таблице.

function dead_db() {
  global $wpdb;

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

  wp_load_translations_early();

Надеюсь, что это поможет кому-то:)

Ответ 5

Помимо всего сказанного выше, при работе с многопользовательской средой проверьте также следующее: в соответствующих подкаталогах (/home/subsitename) существуют отдельные файлы wp-config.php и .htaccess для каждого из (суб) сайтов, поэтому вышеупомянутые параметры должны быть скорректированы во всех этих файлах. Например, мой основной сайт работал правильно, так как эти файлы в моем/домашнем каталоге были в порядке, но когда вы пытались получить доступ к моим подсайтам, я получал сообщение об ошибке подключения к базе данных, пока не изменил эти файлы.

Ответ 6

Я добавил $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);

Ответ 7

Вот как я его исправил

настройки конфигурации

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 задает значения для вашего корневого блога (который должен быть ложью/номером 1) на

domain localhost
root /myblog/

И наконец - reset sitrurl и домашняя страница в таблице опций (снова найденная с использованием phpmyadmin) до

 http://localhost/myblog/

Ответ 8

Вдохновленный ответом Сабина, я проверил wp_blogs и обнаружил, что значение domain все еще указывает на неправильный домен (я перемещал многосайтовый сайт на dev-сервер). Запуск UPDATE wp_blogs SET domain='example.com'; исправил мою проблему (обратите внимание, что я использую подкаталог multisite, а не субдомен - не слепо запускайте этот SQL!)

Ответ 9

Мой DOMAIN_CURRENT_SITE в wp-config.php был define ('DOMAIN_CURRENT_SITE', 'www.example.com');

Удаление " http://" в wp_blogs → домене исправил мою проблему.

Ответ 10

У меня возникла проблема после перемещения мультисайта из подкаталога в корневой каталог. Ват решил, что это для меня было частично тем, о чем говорил Сабин Чирила: 1. Убедитесь, что DB_NAME, DB_USER, DB_PASSWORD и DB_HOST в вашем wp-config.php действительно являются ожидаемыми. 2. Как упоминал ранее Дима Л., определите ( "MULTISITE", true); также ожидается. 3. Измените "путь" таблицы столбцов "wp_blogs" на "/", и соединение с БД было восстановлено.

но мне пришлось изменить еще кое-что.

  1. Чтобы иметь возможность просматривать интерфейс, мне также пришлось изменить "путь к столбцу таблицы wp_site" в "/"
  2. а затем (в теме двадцатьсевентин-ребенок) мне пришлось перенастроить некоторые параметры конфигурации в бэкэнд, поскольку они не были учтены. Но это было просто, поскольку данные все еще были там.

Ответ 11

Если вы используете WHM/cPanel, и вы уже проверили, что добавили константу MULTISITE/WP_ALLOW_MULTISITE, вы, вероятно, столкнулись с проблемами виртуального хоста.

Если вы получаете ошибку базы данных, скорее всего, ваши серверы имен или запись являются правильными. В противном случае ваш домен не будет указывать на ваш сервер с подключением к базе данных. Но вы, вероятно, забыли или пропустили доменное имя из псевдонимов cPanel.

Просто перейдите в cPanel, найдите "Псевдонимы" и введите имя домена, которое отсутствует в "Создать новое псевдоним".

Вы также можете перейти на cPanel, войдя в WHM, ищите "Учетные записи списков", ищите нужную учетную запись и щелкаете по значку CP.