Помилка підключення до DB після копіювання екземпляра WordPress Multisite у друге місце


11

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

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

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

/** Turning on WordPress MU, new in 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- I change this line
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Змінено на:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- now changed

Коли я завантажую http://staging.example.com , я отримую ... Error establishing database connection!

Я перевірив і потрійно перевірив ім’я користувача та пароль, переконався, що користувач має всі привілеї в новій базі даних інтерактивних дій, і я залишив DBHOST як "localhost" (хоча змінивши його на staging.example.com не став допомога, будь-яка).

Чому не вдалося б підключити базу даних? Хтось? (Заздалегідь дякую за допомогу.)

Примітка: http://example.com прекрасно працює за допомогою дуже схожих налаштувань з'єднання db, лише з іншою базою даних, тому проблема з тим, що сервер бази даних не працює.


Хм. Ніхто, так? Це дивна помилка, точно.
Джейсон Родос

У мене така ж помилка при спробі зробити міграцію Wordpress Network на місці - жоден хост не перемістився
Mikko Ohtamaa

Добре. Я відслідковував різні режими відмов і робив допис у своєму блозі: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

Відповіді:


2

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

Чи може переспрямування з staging.example.com на example.com/staging суперечити існуючій установці?

ОНОВЛЕННЯ: схоже, це може бути пов'язано з проблемами .htaccess і складними посиланнями на домен у базі даних

З кодексу WP:

Переміщення мультисайту WordPress

Мультисайт набагато складніше переміщувати, оскільки сама база даних має декілька посилань на ім’я сервера, а також на розташування папок.

Найкращий спосіб переміщення Multisite - це переміщення файлів, редагування .htaccess і wp-config.php (якщо ім'я папки, що містить Multisite, змінилося), а потім вручну редагувати базу даних. Шукайте всі примірники вашого доменного імені та змінюйте їх за потребою. Цей крок ще не може бути легко автоматизований. Якщо ви переміщуєте Multisite з однієї папки в іншу, вам потрібно переконатися, що ви редагуєте записи wp_blogs, щоб правильно змінити ім’я папки.


11

Я це вирішив і це спрацювало :)

У wp_blogsтаблиці,

Стара структура була

Domain : localhost/smart_facility_linux
Path : /

Але я змінив його, щоб він працював так:

Для кореневого сайту:

Domain : localhost
Path : /smart_facility_linux/

Для підсайту 1 (будь-який підрозділ під головним сайтом я лише наводив приклад):

Domain : localhost
Path : /smart_facility_linux/subsite1/

На жаль, у мене не вийшло. Це прекрасний приклад глупості використання абсолютних шляхів у базі даних для WP.
Pegues

@Pegues він зробив роботу для 10+ людей тут :)
Pratik

1
Я щасливий, що це працювало для інших. Це не працює для багатьох людей - і з того, що я досліджував це, тому що є різниця в значеннях db при переході від субдомену до підкаталогу. На мій початковий коментар, використання абсолютних шляхів не є розумним WP. Ніколи не було і є причиною такої кількості питань. Налаштування належного робочого процесу за допомогою конвеєра CI / CD насправді неможливо на рівні підприємства.
Pegues

2

Дійсно є лише один спосіб зробити легку передачу домену або хоста, який я знайшов. Він працює бездоганно для мене на одиночних і багатосайтових установках.

  1. Експортуйте свою базу даних у файл .sql. (Для цього я використовую PHPMyAdmin)
  2. Створіть нову копію файлу для редагування, дещо інше ім'я.
  3. Відкрийте файл у вибраному текстовому редакторі> (наприклад, gedit)
  4. Виконайте пошук / заміну на домені AND абсолютний шлях (/ home / username / public_html / до / home / username / public_html /) від виробництва до розробника.
  5. Збережіть файл.
  6. Скопіюйте всю установку в каталог розробників.
  7. Додайте наступний рядок у файл wp-config.php:

    define ('RELOCATE', правда);

  8. Увійдіть і збережіть налаштування постійних посилань.

  9. Видаліть правило визначення, яке ви ввели у свій wp-config.php.


1
Це добре працює, за винятком випадків, коли ви замінили рядок на серіалізовані дані, наприклад, віджет або параметр теми, рядком різної довжини. Серізовані дані виглядають приблизно так: 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 більше не відповідають наведеним рядкам - я відредагував деталі свого сайту та не відслідковував кількість нових символів.) Єдиним рішенням для цього є щоб вручну оновити підрахунки - або зберегти довжину доменної послідовності однаковою.
марфарма

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

Це добре знати. Це означає, що нам потрібно принаймні витратити час, щоб проглянути всі записи, як вони знайдені та замінені, а не замінити всі.
Джефф Себрінг

1
Ви можете використовувати цей скрипт для пошуку / заміни серіалізованих даних: interconnectit.com/products/…
Costa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.