Kesalahan koneksi DB setelah menyalin instance WordPress Multisite ke lokasi kedua

11

Ini pengaturan saya. Saya memiliki instance Multisite yang berjalan di http://example.com , dan saya ingin melakukan pengembangan dan pementasan. Memindahkan contoh Multisite WP yang sudah ada ke localhost adalah mimpi buruk, jadi saya akan melakukan dev di lokasi pementasan.

Saya mengatur http://staging.example.com untuk menunjuk ke direktori / public_html / staging / dari akun hosting, dan menyalin semua file WP dari root saya ke direktori / staging /. Saya juga menyalin file database (SQL dump, mengimpor tabel ke database baru), dan mengubah file wp-config.php untuk menunjuk ke database baru.

Setelah menjalankan SQL untuk mengubah catatan database, saya juga mengubah baris yang satu ini di file 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 );

Diubah menjadi:

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

Ketika saya memuat http://staging.example.com , saya mendapatkan ... Error establishing database connection!

Saya telah memeriksa dan memeriksa tiga kali lipat nama pengguna dan kata sandi, memastikan bahwa pengguna memiliki semua hak istimewa pada basis data pementasan baru, dan saya telah meninggalkan DBHOST sebagai 'localhost' (walaupun mengubahnya menjadi staging.example.com tidak bantuan, baik).

Mengapa koneksi basis data gagal? Siapa saja? (Terima kasih atas bantuan Anda sebelumnya.)

NB: http://example.com berfungsi dengan baik berjalan pada pengaturan koneksi db yang sangat mirip, hanya dengan database yang berbeda, jadi itu bukan masalah dengan server database sedang down.

Jason Rhodes
sumber
Hmm. Tidak ada siapa-siapa, ya? Itu kesalahan yang aneh, pasti.
Jason Rhodes
Saya memiliki kesalahan yang sama ketika mencoba melakukan migrasi Wordpress Network di tempat - tidak ada host yang dipindahkan
Mikko Ohtamaa
Baik. Saya melacak berbagai mode kegagalan dan membuat posting blog mereka: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

Jawaban:

2

Satu pemikiran - ketika saya mengunjungi www.example.com/staging/wp-admin secara otomatis mengarahkan saya ke www.example.com/wp-admin

Bisakah pengalihan dari staging.example.com ke example.com/staging bertentangan dengan instalasi yang ada?

UPDATE: sepertinya itu bisa terkait dengan masalah .htaccess dan referensi domain yang rumit dalam database

Dari WP Codex:

Memindahkan WordPress Multisite

Multisite jauh lebih rumit untuk dipindahkan, karena database itu sendiri memiliki banyak referensi ke nama server dan juga lokasi folder.

Cara terbaik untuk memindahkan Multisite adalah dengan memindahkan file, mengedit .htaccess dan wp-config.php (jika nama folder yang berisi Multisite berubah), lalu edit database secara manual. Cari semua contoh nama domain Anda, dan ubah sesuai kebutuhan. Langkah ini belum bisa secara otomatis mudah. Jika Anda memindahkan Multisite dari satu folder ke folder lain, Anda perlu memastikan Anda mengedit entri wp_blogs untuk mengubah nama folder dengan benar.

timshutes
sumber
11

Saya menyelesaikannya & berhasil :)

Dalam wp_blogstabel,

Struktur lama adalah

Domain : localhost/smart_facility_linux
Path : /

Tetapi saya mengubahnya untuk membuatnya berfungsi sebagai berikut:

Untuk situs root:

Domain : localhost
Path : /smart_facility_linux/

Untuk sub-situs 1 (setiap sub-situs di bawah situs utama, saya hanya memberi contoh):

Domain : localhost
Path : /smart_facility_linux/subsite1/
Pratik
sumber
Sayangnya tidak berhasil untuk saya. Ini adalah contoh sempurna dari kebodohan menggunakan jalur absolut dalam database untuk WP.
Pegues
@Pegues itu bekerja untuk 10+ orang di sini :)
Pratik
1
Saya senang itu berhasil untuk orang lain. Ini tidak bekerja untuk banyak orang - dan dari apa yang saya teliti itu karena ada perbedaan dalam nilai db ketika beralih dari subdomain ke subdirektori. Dan untuk komentar awal saya, penggunaan jalur absolut tidak bijaksana oleh WP. Belum pernah, dan merupakan penyebab begitu banyak masalah. Dan mengatur alur kerja yang tepat dengan pipa CI / CD tidak benar-benar mungkin pada tingkat perusahaan.
Pegues
2

Sebenarnya hanya ada satu cara untuk melakukan transfer domain atau host yang mudah yang saya temukan. Ini berfungsi dengan sempurna bagi saya pada instalasi tunggal dan multisite.

  1. Ekspor database Anda ke file .sql. (Saya menggunakan PHPMyAdmin untuk ini)
  2. Buat salinan baru file yang akan diedit dengan nama yang sedikit berbeda.
  3. Buka file di editor teks pilihan Anda> (misalnya gedit)
  4. Jalankan pencarian / ganti pada domain DAN jalur absolut (/ home / nama pengguna / public_html / ke / home / nama pengguna / public_html /) dari produksi ke dev.
  5. Simpan file.
  6. Salin seluruh instalasi ke direktori pengembangan Anda.
  7. Tambahkan baris berikut ke file wp-config.php Anda:

    define ('RELOCATE', true);

  8. Masuk, dan simpan pengaturan permalink Anda.

  9. Hapus aturan define yang Anda masukkan ke wp-config.php Anda.

Jeff Sebring
sumber
1
Itu berfungsi dengan baik, kecuali jika Anda akhirnya mengganti string dalam data bersambung, seperti widget atau opsi tema, dengan string dengan panjang yang berbeda. Data berseri terlihat seperti ini - s: 76: "hxxp: //www-dev.example.com/wp-content/uploads/company_logo_swoosh.gif: 70:" hxxp: //www.example.com/ wp-content / uploads / company_logo_swoosh.gif '(catatan: panjang 76 dan 70 tidak lagi sesuai dengan string yang disajikan - Saya mengedit detail situs saya dan tidak melacak jumlah karakter baru.) Satu-satunya solusi untuk itu adalah untuk memperbarui penghitungan secara manual - atau menjaga agar panjang staging domain tetap sama.
marfarma
Saya juga mengganti tt dengan xx sehingga url tidak akan dikaburkan - Anda tidak bisa melihat perbedaan di antara mereka.
marfarma
Itu menyenangkan untuk diketahui. Ini berarti kita setidaknya harus meluangkan waktu untuk memeriksa semua entri karena mereka ditemukan dan diganti, bukan diganti semua.
Jeff Sebring
1
Anda dapat menggunakan skrip ini untuk mencari / mengganti data serial: interconnectit.com/products/…
Costa