Ошибка подключения к БД после копирования экземпляра WordPress Multisite на второе местоположение

18 июл. 2011 г., 15:53:40
Просмотры: 25.3K
Голосов: 13

Вот моя конфигурация. У меня есть экземпляр Multisite, работающий на http://example.com, и я хочу настроить разработку и staging. Перенос существующего экземпляра Multisite WP на localhost - это кошмар, поэтому я буду вести разработку на staging-площадке.

Я настроил http://staging.example.com для указания на директорию /public_html/staging/ хостинг-аккаунта и скопировал все файлы WP из корневой директории в /staging/. Я также скопировал файлы базы данных (SQL дамп, импортировал таблицы в новую базу данных) и изменил файл wp-config.php для указания на новую базу данных.

После выполнения SQL для изменения записей базы данных, я также изменил эту строку в файле wp-config.php:

/** Включение WordPress MU, новое в 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- Я меняю эту строку
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Изменено на:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- теперь изменено

Когда я загружаю http://staging.example.com, я получаю... Error establishing database connection!

Я проверил и перепроверил имя пользователя и пароль, убедился, что пользователь имеет все привилегии в новой staging базе данных, и оставил DBHOST как 'localhost' (хотя изменение его на staging.example.com тоже не помогло).

Почему может не работать подключение к базе данных? Кто-нибудь? (Заранее спасибо за помощь.)

Примечание: http://example.com работает нормально с очень похожими настройками подключения к БД, просто с другой базой данных, так что проблема не в том, что сервер базы данных не работает.

3
Комментарии

Хм. Никто, да? Это действительно странная ошибка.

Jason Rhodes Jason Rhodes
19 июл. 2011 г. 00:16:47

У меня такая же ошибка при попытке миграции сети Wordpress на месте - без переноса на другой хостинг

Mikko Ohtamaa Mikko Ohtamaa
22 авг. 2011 г. 10:29:40

Ок. Я отследил различные сценарии сбоев и сделал пост в блоге о них: http://opensourcehacker.com/2011/08/22/trouble-filled-installation-tutorial-of-wordpress-network-a-k-a-multi-site/

Mikko Ohtamaa Mikko Ohtamaa
22 авг. 2011 г. 16:44:33
Все ответы на вопрос 4
3
15

Я решил эту проблему, и всё заработало :)

В таблице wp_blogs,

Старая структура была:

Домен: localhost/smart_facility_linux
Путь: /

Но я изменил её, чтобы всё работало следующим образом:

Для основного сайта:

Домен: localhost
Путь: /smart_facility_linux/

Для подсайта 1 (любой подсайт под основным сайтом, просто привожу пример):

Домен: localhost
Путь: /smart_facility_linux/subsite1/
17 апр. 2015 г. 13:33:03
Комментарии

К сожалению, у меня не сработало. Это идеальный пример глупости использования абсолютных путей в базе данных для WordPress.

Pegues Pegues
13 дек. 2019 г. 18:54:26

@Pegues это сработало для 10+ человек здесь :)

Pratik Joshi Pratik Joshi
15 дек. 2019 г. 05:52:20

Я рад, что сработало для других. Для многих людей это не работает - и, как я выяснил, это связано с различиями в значениях базы данных при переходе с субдомена на подкаталог. И к моему первоначальному комментарию - использование абсолютных путей в WordPress неразумно. Никогда не было разумным и является причиной множества проблем. И настройка правильного workflow с CI/CD пайплайном на enterprise уровне практически невозможна.

Pegues Pegues
16 дек. 2019 г. 19:59:48
0

Одна мысль - когда я перехожу на www.example.com/staging/wp-admin, меня автоматически перенаправляет на www.example.com/wp-admin

Может ли редирект с staging.example.com на example.com/staging конфликтовать с существующей установкой?

ОБНОВЛЕНИЕ: похоже, это может быть связано с проблемами в .htaccess и сложными ссылками на домен в базе данных

Из WP Codex:

Перенос WordPress Multisite

Multisite значительно сложнее переносить, так как сама база данных содержит множество ссылок на имя сервера, а также на расположение папок.

Лучший способ переноса Multisite - переместить файлы, отредактировать .htaccess и wp-config.php (если изменилось имя папки, содержащей Multisite), а затем вручную отредактировать базу данных. Найдите все упоминания вашего доменного имени и измените их по мере необходимости. Этот шаг пока нельзя легко автоматизировать. Если вы переносите Multisite из одной папки в другую, вам нужно убедиться, что вы отредактировали записи wp_blogs, чтобы правильно изменить имя папки.

20 июл. 2011 г. 00:18:42
4

Я нашел только один действительно простой способ переноса домена или хостинга. Он безупречно работает для меня как на одиночных установках WordPress, так и на мультисайтах.

  1. Экспортируйте вашу базу данных в файл .sql. (Я использую для этого PHPMyAdmin)
  2. Создайте новую копию файла для редактирования с немного другим именем.
  3. Откройте файл в предпочитаемом текстовом редакторе (например, gedit)
  4. Выполните поиск/замену домена И абсолютного пути (/home/username/public_html/ на /home/username/public_html/) с рабочего сервера на тестовый.
  5. Сохраните файл.
  6. Скопируйте всю установку в вашу тестовую директорию.
  7. Добавьте следующую строку в ваш файл wp-config.php:

    define('RELOCATE',true);

  8. Войдите в систему и сохраните настройки постоянных ссылок.

  9. Удалите правило define, которое вы добавили в wp-config.php.

22 июл. 2011 г. 13:49:34
Комментарии

Это работает нормально, за исключением случаев, когда вы заменяете строку в сериализованных данных, таких как виджеты или настройки темы, на строку с другой длиной. Сериализованные данные выглядят так - s:76:"hxxp://www-dev.example.com/wp-content/uploads/company_logo_swoosh.gif' 's:70:"hxxp://www.example.com/wp-content/uploads/company_logo_swoosh.gif' (примечание: длины 76 и 70 больше не соответствуют представленным строкам - я убрал детали своего сайта и не отслеживал новое количество символов.) Единственное решение для этого - вручную обновить счётчики - или сохранять длину домена для тестирования такой же.

marfarma marfarma
25 июл. 2011 г. 21:12:59

Я также заменил tt на xx, чтобы URL-адреса не были скрыты - вы не смогли бы увидеть разницу между ними.

marfarma marfarma
25 июл. 2011 г. 21:15:27

Это полезно знать. Это означает, что нам следует хотя бы потратить время на просмотр всех записей по мере их обнаружения и замены, вместо того чтобы заменять всё сразу.

Jeff Sebring Jeff Sebring
26 июл. 2011 г. 00:50:30

Вы можете использовать этот скрипт для поиска/замены сериализованных данных: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Costa Costa
14 окт. 2014 г. 03:56:24
0

Это сработало у меня.

  1. Заархивируйте все файлы
  2. Скачайте базу данных
  3. Загрузите файлы на новый сервер
  4. Отредактируйте базу данных в любом редакторе (я использовал Notepad++)
  5. Замените domain.com на newdomain.com
  6. Загрузите базу данных на новый сервер
  7. Войдите в систему и наслаждайтесь!

Примечание: Не забудьте изменить доменное имя в файле config.php. Также скопируйте файл .htaccess на новый сервер. Это для базовой WordPress Multisite с минимальным количеством плагинов. Рекомендуется сначала сделать резервную копию.

28 июл. 2021 г. 23:58:32