वर्डप्रेस मल्टीसाइट उदाहरण को दूसरे स्थान पर कॉपी करने के बाद DB कनेक्शन त्रुटि


11

यहाँ मेरा सेटअप है। मेरे पास http://example.com पर एक मल्टीसाइट उदाहरण चल रहा है, और मैं विकास और मंचन करना चाहता हूं। WP के एक मौजूदा मल्टीसाइट उदाहरण को लोकलहोस्ट पर ले जाना दुःस्वप्न है, इसलिए मैं इसके बजाय स्टेजिंग लोकेशन पर देव करने जा रहा हूं।

मैंने होस्टिंग खाते के / public_html / मंचन / निर्देशिका को इंगित करने के लिए http://staging.example.com की स्थापना की , और अपने रूट से / staging / निर्देशिका में सभी WP फ़ाइलों की प्रतिलिपि बनाई। मैंने डेटाबेस फ़ाइलों की प्रतिलिपि भी बनाई (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 को 'लोकलहोस्ट' के रूप में छोड़ दिया है (हालांकि इसे staging.example.com में परिवर्तित नहीं किया है। मदद, या तो)।

डेटाबेस कनेक्शन विफल क्यों होगा? किसी को? (आपकी सहायता के लिए अग्रिम धन्यवाद।)

नायब: http://example.com ठीक उसी तरह के db कनेक्शन सेटिंग्स पर काम कर रहा है, बस एक अलग डेटाबेस के साथ, इसलिए यह डेटाबेस सर्वर के डाउन होने के साथ कोई समस्या नहीं है।


हम्म। कोई नहीं, हुह? यह सुनिश्चित करने के लिए एक अजीब त्रुटि है।
जेसन रोड्स

कोई मेजबान चले गए - मैं एक ही त्रुटि Wordpress नेटवर्क प्रवास में जगह करने का प्रयास कर है
मिक्को Ohtamaa

ठीक है। मैं विभिन्न विफलता मोड नीचे ट्रैक किए गए और उनमें से एक ब्लॉग पोस्ट किया: opensourcehacker.com/2011/08/22/...
मिक्को Ohtamaa

जवाबों:


2

एक विचार - जब मैं www.example.com/staging/wp-admin पर जाता हूं तो यह स्वचालित रूप से मुझे www.example.com/wp-admin पर पुनर्निर्देशित कर देता है

क्या staging.example.com से redirect को example.com/staging किया जा सकता है जो मौजूदा इंस्टॉल के साथ परस्पर विरोधी है?

अद्यतन: ऐसा लगता है कि यह .htaccess मुद्दों और डेटाबेस में जटिल डोमेन संदर्भों से संबंधित हो सकता है

WP कोडेक्स से:

चल रहा है वर्डप्रेस मल्टीसाइट

मल्टीसाइट को स्थानांतरित करने के लिए और अधिक जटिल है, क्योंकि डेटाबेस में स्वयं सर्वर नाम के साथ-साथ फ़ोल्डर स्थानों के कई संदर्भ हैं।

मल्टीसाइट को स्थानांतरित करने का सबसे अच्छा तरीका फाइलों को स्थानांतरित करना है। अपने डोमेन नाम के सभी उदाहरण खोजें, और उन्हें आवश्यकतानुसार बदलें। यह चरण अभी तक आसानी से स्वचालित नहीं हो सकता है। यदि आप एक फ़ोल्डर से दूसरे में मल्टीसाइट ले जा रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आप फ़ोल्डर नाम को सही ढंग से बदलने के लिए 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 इसे यहाँ 10+ लोगों के लिए काम किया है :)
प्रतीक

1
मुझे खुशी है कि इसने दूसरों के लिए काम किया। यह बहुत से लोगों के लिए काम नहीं करता है - और जो मैंने इस पर शोध किया है वह इसलिए है क्योंकि उपडोमेन से उपनिर्देशिका में स्विच करते समय डीबी मूल्यों में अंतर होता है। और मेरी प्रारंभिक टिप्पणी में, WP द्वारा पूर्ण पथ का उपयोग बुद्धिमान नहीं है। कभी नहीं किया गया है, और इतने सारे मुद्दों का कारण है। और CI / CD पाइपलाइन के साथ एक उचित वर्कफ़्लो स्थापित करना उद्यम स्तर पर वास्तव में संभव नहीं है।
साथियों

2

डोमेन या होस्ट का एक आसान हस्तांतरण करने के लिए वास्तव में केवल एक ही तरीका है जो मुझे मिला है। यह एकल और मल्टीसाइट इंस्टॉलेशन पर मेरे लिए त्रुटिपूर्ण काम करता है।

  1. अपने डेटाबेस को .sql फ़ाइल में निर्यात करें। (मैं इसके लिए PHPMyAdmin का उपयोग करता हूं)
  2. थोड़े अलग नाम से संपादित की जाने वाली फ़ाइल की एक नई प्रति बनाएँ।
  3. आप में पसंदीदा पाठ संपादक फ़ाइल खोलें> (उदाहरण के लिए gedit)
  4. डोमेन और निरपेक्ष पथ (/ घर / उपयोगकर्ता नाम / public_html / to / home / username / public_html /) को उत्पादन से देव में खोजें / बदलें।
  5. फ़ाइल सहेजें।
  6. संपूर्ण स्थापना को अपने विकास निर्देशिका में कॉपी करें।
  7. अपनी wp-config.php फ़ाइल में निम्न पंक्ति जोड़ें:

    परिभाषित ( 'स्थानांतरित', true);

  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 अब प्रस्तुत किए गए तार के अनुरूप नहीं हैं - मैंने अपनी साइट का विवरण संपादित किया और नए वर्ण गणना का ट्रैक नहीं रखा।) इसके लिए एकमात्र समाधान है। मैन्युअल रूप से काउंट्स को अपडेट करने के लिए - या स्टेजिंग डोमेन की लंबाई को समान रखें।
मारफार्मा

मैंने भी tx को xx से बदल दिया ताकि url अस्पष्ट न हो - आप उनके बीच का अंतर नहीं देख सकते।
marfarma

यह जानकर अच्छा लगा। इसका मतलब है कि हमें सभी प्रविष्टियों के माध्यम से जाने के लिए कम से कम समय लेना चाहिए क्योंकि वे सभी के बदले पाए जाते हैं और बदले जाते हैं।
जेफ सेब्रिंग

1
आप क्रमबद्ध डेटा को खोजने / बदलने के लिए इस स्क्रिप्ट का उपयोग कर सकते हैं: interconnectit.com/products/…
कोस्टा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.