ข้อผิดพลาดการเชื่อมต่อฐานข้อมูลหลังจากคัดลอกอินสแตนซ์ WordPress Multisite ไปยังตำแหน่งที่สอง


11

นี่คือการตั้งค่าของฉัน ฉันมีอินสแตนซ์ Multisite ทำงานอยู่ที่http://example.comและฉันต้องการพัฒนาและจัดเตรียม การย้ายอินสแตนซ์ Multisite ที่มีอยู่ของ WP ไปยัง localhost เป็นฝันร้ายดังนั้นฉันจะทำ dev บนตำแหน่งการจัดเตรียมแทน

ฉันตั้งค่า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ทำงานได้ดีในการตั้งค่าการเชื่อมต่อฐานข้อมูลที่คล้ายกันมากเพียงกับฐานข้อมูลที่แตกต่างกันดังนั้นจึงไม่เป็นปัญหากับเซิร์ฟเวอร์ฐานข้อมูลหยุดทำงาน


อืมมม ไม่มีใครหรอ มันเป็นข้อผิดพลาดที่แปลกแน่นอน
Jason Rhodes

ฉันมีข้อผิดพลาดเดียวกันเมื่อพยายามทำการโยกย้าย Wordpress Network ในสถานที่ - ไม่มีการย้ายโฮสต์
Mikko Ohtamaa

ตกลง. ฉันติดตามโหมดความล้มเหลวต่างๆและสร้างโพสต์บล็อกของพวกเขา: opensourcehacker.com/2011/08/22/ …
Mikko Ohtamaa

คำตอบ:


2

One thought - เมื่อฉันไปที่ www.example.com/staging/wp-admin มันจะเปลี่ยนเส้นทางฉันไปที่ www.example.com/wp-admin โดยอัตโนมัติ

การเปลี่ยนเส้นทางจาก staging.example.com ไปที่ example.com/staging อาจขัดแย้งกับการติดตั้งปัจจุบันหรือไม่

อัปเดต: ดูเหมือนว่าอาจเกี่ยวข้องกับปัญหา. htaccess และการอ้างอิงโดเมนที่ซับซ้อนในฐานข้อมูล

จาก WP Codex:

ย้าย WordPress หลายไซต์

Multisite มีความซับซ้อนในการย้ายเนื่องจากฐานข้อมูลมีการอ้างอิงหลายชื่อเซิร์ฟเวอร์และตำแหน่งโฟลเดอร์

วิธีที่ดีที่สุดในการย้าย 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. เรียกใช้ find / replace บนโดเมนและพา ธ สัมบูรณ์ (/ home / ชื่อผู้ใช้ / public_html / to / home / ชื่อผู้ใช้ / public_html /) จากการผลิตไปยัง dev
  5. บันทึกไฟล์
  6. คัดลอกการติดตั้งทั้งหมดไปยังไดเรกทอรีการพัฒนาของคุณ
  7. เพิ่มบรรทัดต่อไปนี้ในไฟล์ wp-config.php ของคุณ:

    กำหนด ( 'ย้าย' จริง);

  8. เข้าสู่ระบบและบันทึกการตั้งค่าลิงก์ถาวรของคุณ

  9. ลบกฎ define ที่คุณใส่ใน 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 ไม่ตรงกับสตริงที่นำเสนออีกต่อไป - ฉันแก้ไขรายละเอียดเว็บไซต์ของฉันและไม่ได้ติดตามการนับตัวละครใหม่) ทางออกเดียวสำหรับที่คือ เพื่ออัปเดตการนับด้วยตนเอง - หรือทำให้โดเมน staging ยาวเท่ากัน
marfarma

ฉันยังแทนที่ tt ด้วย xx ดังนั้น URL จะไม่ถูกบดบัง - คุณไม่เห็นความแตกต่างระหว่างพวกเขา
marfarma

เป็นเรื่องดีที่รู้ ซึ่งหมายความว่าอย่างน้อยเราควรใช้เวลาในการตรวจสอบรายการทั้งหมดตามที่พบและแทนที่แทนที่จะแทนที่ทั้งหมด
Jeff Sebring

1
คุณสามารถใช้สคริปต์นี้เพื่อค้นหา / แทนที่ข้อมูลต่อเนื่อง: interconnectit.com/products/…
Costa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.