Błąd połączenia z bazą danych DB po skopiowaniu instancji WordPress Multisite do drugiej lokalizacji

11

Oto moja konfiguracja. Mam instancję Multisite działającą pod adresem http://example.com i chcę tworzyć i przygotowywać. Przeniesienie istniejącej instancji WP na Multisite na localhost jest koszmarem, więc zamiast tego zrobię dev w miejscu postoju.

Skonfigurowałem http://staging.example.com, aby wskazywał na katalog / public_html / staging / konta hostingowego, i skopiowałem wszystkie pliki WP z mojego katalogu głównego do katalogu / staging /. Skopiowałem również pliki bazy danych (zrzut SQL, zaimportowałem tabele do nowej bazy danych) i zmieniłem plik wp-config.php, aby wskazywał na nową bazę danych.

Po uruchomieniu SQL, aby zmienić rekordy bazy danych, zmieniam również ten jeden wiersz w pliku 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 );

Zmienić na:

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

Kiedy ładuję http://staging.example.com , dostaję ... Error establishing database connection!

Sprawdziłem i potrójnie sprawdziłem nazwę użytkownika i hasło, upewniłem się, że użytkownik ma wszystkie uprawnienia do nowej bazy danych przemieszczania, i pozostawiłem DBHOST jako „localhost” (chociaż zmiana go na staging.example.com nie pomoc).

Dlaczego połączenie z bazą danych nie powiedzie się? Ktoś? (Z góry dziękuję za pomoc.)

Uwaga: http://example.com działa poprawnie na bardzo podobnych ustawieniach połączenia db, tylko z inną bazą danych, więc nie jest to problem z wyłączeniem serwera bazy danych.

Jason Rhodes
źródło
Hmm Nikt nie? Z pewnością to dziwny błąd.
Jason Rhodes
Mam ten sam błąd, gdy próbuję przeprowadzić migrację sieci Wordpress w miejscu - żaden host nie został przeniesiony
Mikko Ohtamaa
Ok.
Wyśledziłem

Odpowiedzi:

2

Jedna myśl - kiedy wchodzę na www.example.com/staging/wp-admin, automatycznie przekierowuje mnie na www.example.com/wp-admin

Czy przekierowanie ze staging.example.com na example.com/staging może powodować konflikt z istniejącą instalacją?

AKTUALIZACJA: wygląda na to, że może to być związane z problemami .htaccess i skomplikowanymi odwołaniami do domen w bazie danych

Z Kodeksu WP:

Przenoszenie witryny WordPress Multisite

Przenoszenie wielu witryn jest znacznie bardziej skomplikowane, ponieważ sama baza danych zawiera wiele odwołań do nazwy serwera oraz lokalizacji folderów.

Najlepszym sposobem przenoszenia Multisite jest przeniesienie plików, edycja plików .htaccess i wp-config.php (jeśli nazwa folderu zawierającego Multisite została zmieniona), a następnie ręczna edycja bazy danych. Wyszukaj wszystkie wystąpienia nazwy domeny i zmień je w razie potrzeby. Ten krok nie może być jeszcze łatwo zautomatyzowany. Jeśli przenosisz Multisite z jednego folderu do drugiego, musisz upewnić się, że dokonałeś edycji wpisów wp_blogs, aby poprawnie zmienić nazwę folderu.

liczniki czasu
źródło
11

Rozwiązałem to i zadziałało :)

W wp_blogstabeli

Stara struktura była

Domain : localhost/smart_facility_linux
Path : /

Ale zmieniłem go, aby działał w następujący sposób:

W przypadku strony głównej:

Domain : localhost
Path : /smart_facility_linux/

W przypadku podstrony 1 (dowolnej podstrony pod główną witryną, podałem tylko przykład):

Domain : localhost
Path : /smart_facility_linux/subsite1/
Pratik
źródło
Niestety nie działało dla mnie. To doskonały przykład głupoty używania bezwzględnych ścieżek w bazie danych dla WP.
Pegues,
@Pegues to działało dla ponad 10 osób tutaj :)
Pratik
1
Cieszę się, że działało dla innych. Nie działa to dla wielu osób - i z tego, co zbadałem, wynika to, że istnieje różnica w wartościach db przy przechodzeniu z subdomeny do podkatalogu. I do mojego początkowego komentarza, użycie ścieżek bezwzględnych nie jest mądre przez WP. Nigdy nie było i jest przyczyną tak wielu problemów. A skonfigurowanie prawidłowego przepływu pracy za pomocą potoku CI / CD nie jest tak naprawdę możliwe na poziomie przedsiębiorstwa.
Pegues
2

Jest tak naprawdę tylko jeden sposób na łatwe przeniesienie domeny lub hosta, które znalazłem. Działa dla mnie bezbłędnie w instalacjach jedno- i wielostanowiskowych.

  1. Wyeksportuj bazę danych do pliku .sql. (Używam do tego PHPMyAdmin)
  2. Utwórz nową kopię pliku do edycji o nieco innej nazwie.
  3. Otwórz plik w preferowanym edytorze tekstu> (na przykład gedit)
  4. Uruchom find / replace w domenie ORAZ ścieżka bezwzględna (/ home / nazwa użytkownika / public_html / do / home / nazwa użytkownika / public_html /) od wersji produkcyjnej do deweloperskiej.
  5. Zapisz plik.
  6. Skopiuj całą instalację do katalogu programowania.
  7. Dodaj następujący wiersz do pliku wp-config.php:

    Zdefiniuj („RELOCATE”, true);

  8. Zaloguj się i zapisz ustawienia permalinków.

  9. Usuń regułę definiującą, którą umieściłeś w pliku wp-config.php.

Jeff Sebring
źródło
1
Działa to dobrze, z wyjątkiem sytuacji, gdy zastąpisz ciąg danych szeregowych, takich jak widżet lub opcja motywu, ciągiem o innej długości. Serializowane dane wyglądają następująco - 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 '(uwaga: długości 76 i 70 nie odpowiadają już przedstawionym ciągom znaków - zredagowałem szczegóły mojej witryny i nie śledziłem liczby nowych znaków.) Jedynym rozwiązaniem tego jest aby ręcznie zaktualizować liczniki - lub utrzymać tę samą długość domeny pomostowej.
marfarma
Zamieniłem też tt na xx, aby adresy URL nie były zasłonięte - nie było widać różnicy między nimi.
marfarma
Dobrze wiedzieć. Oznacza to, że powinniśmy przynajmniej poświęcić czas na przejrzenie wszystkich wpisów, gdy zostaną one znalezione i zastąpione, zamiast zastąpić wszystkie.
Jeff Sebring
1
Za pomocą tego skryptu można wyszukiwać / zastępować dane serializowane: interconnectit.com/products/…
Costa