2012-10-24 13 views
10

के साथ अपग्रेड करें मैं अभिव्यक्तिइंजिन v1 को अभिव्यक्तिइंजिन v2 को एनजीएन फ़ाइल फ़ील्ड में संग्रहीत बहुत सारे डेटा के साथ अपग्रेड करने वाला हूं।अभिव्यक्तिइंजिन 1 को अभिव्यक्तिइंजिन 2 एनजीएन फ़ाइल फ़ील्ड

ईई 2 सेफक्रैकर फ़ाइल फ़ील्ड के साथ इस डेटा को सही ढंग से काम करने के लिए मुझे क्या कदम उठाने और अपग्रेड पोस्ट करने की आवश्यकता है?

उत्तर

21

EE2 के उन्नयन के बाद, प्रत्येक पूर्व NGEN फ़ाइल क्षेत्र खोजने के लिए और अपने फ़ील्ड प्रकार फ़ाइल बदलने के लिए, और इस SQL ​​क्वेरी चलाएँ:

UPDATE exp_channel_data 
SET field_id_X = CONCAT('{filedir_Y}', field_id_X) 
WHERE field_id_X != '' 
AND field_id_X NOT LIKE '{filedir_%' 

अपने फ़ाइल क्षेत्र की आईडी के साथ "एक्स" बदलें (आप प्राप्त कर सकते हैं कि exp_channel_fields से), और वाई अपलोड वरीयता आईडी के साथ जो nGen फ़ाइल फ़ील्ड पर सेट किया गया था।

आप मैट्रिक्स EE1 में स्थापित किया था, तो मैट्रिक्स 2/EE2 में नवीनीकृत और किसी भी पूर्व NGEN फ़ाइल स्तंभों के लिए भी ऐसा ही करने हैं, तब यह SQL क्वेरी का उपयोग कर:

UPDATE exp_matrix_data 
SET col_id_X = CONCAT('{filedir_Y}', col_id_X) 
WHERE col_id_X != '' 
AND col_id_X NOT LIKE '{filedir_%' 

फिर, एक्स == अपने मैट्रिक्स कॉलम आईडी (आप इसे exp_matrix_cols से प्राप्त कर सकते हैं), और वाई == आपकी अपलोड वरीयता आईडी।

(क्रेडिट, Rob Sanchez को जाता है निश्चित रूप से।)

+0

बिल्कुल सही। धन्यवाद ब्रैंडन! मैं साइट पर मैट्रिक्स का उपयोग करता हूं। –

5

मैं इस जो मेरे अनुभव और धागा है कि ब्रैंडन उसके जवाब में संदर्भित पर ही आधारित होता के बारे में एक पूरा ब्लॉग पोस्ट की है। Blog post here

+0

इसे अभी पढ़ना। –

6

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

सरणी के लिए, बाएं कॉलम प्रत्येक फ़ील्ड आईडी है जिसे आपने टेक्स्ट प्री-अपग्रेड में बदल दिया है, और फ़ाइल पोस्ट अपग्रेड में बदला जाना आवश्यक है, और दाईं ओर फ़ाइल अपलोड डीआईआर के लिए दायर पक्ष का एक्स है क्षेत्र

// Insert file upload directories 

$array = array(
    '16' => '1', 
    '22' => '1', 
    '121' => '3', 
    '58' => '1', 
    '67' => '1', 
    '68' => '1', 
    '71' => '1', 
    '76' => '1', 
    '78' => '1', 
    '94' => '1', 
    '99' => '1', 
    '108' => '3', 
    '109' => '3', 
    '110' => '3', 
    '139' => '1' 
    ); 

foreach($array as $field_id => $dir_id) { 

    $q_entries = $this->EE->db->query("SELECT entry_id, field_id_{$field_id} as 'field' from exp_channel_data where field_id_{$field_id} != '' order by entry_id asc"); 

     if ($q_entries->num_rows() > 0) { 

      echo '<h3>field_id_'.$field_id.'</h3>'; 

      foreach($q_entries->result_array() as $entry) { 

       echo $entry['entry_id']; 

       $filename = trim('{filedir_'.$dir_id.'}'.$entry['field']); 

       echo ' - '.$filename.'<br/>'; 

       $data = array(
        'field_id_'.$field_id => $filename, 
        ); 
       $sql = $this->EE->db->update_string('exp_channel_data', $data, "entry_id = '{$entry['entry_id']}'"); 
       $this->EE->db->query($sql); 

      } 
     } 

} 

echo 'done'; 
0

मेरे पास posted something to GitHub है जो इस प्रक्रिया का सामना करने वाले किसी को भी मदद कर सकता है। यह ईई 1 टेम्पलेट कोड है (इसे आउटपुट या इनपुट पर PHP सक्षम करने की आवश्यकता है) जो दो चीजें दिखाता है:

सबसे पहले, यह सिस्टम में सभी कस्टम फ़ील्ड का एक टैब्यूलर अवलोकन प्रदर्शित करता है। यह संदर्भ के लिए है, जब आप किसी निश्चित फ़ील्ड टाइप के सभी उदाहरण ढूंढने का प्रयास कर रहे हैं। इसमें सामान्य ईई फ़ील्ड, फील्डफ्रेम फील्डटाइप और यहां तक ​​कि मैट्रिक्स कॉलम भी शामिल हैं।

दूसरे, हर बार एक NGEN फ़ाइल क्षेत्र का सामना करना पड़ा है, टेम्पलेट MySQL कोड उत्पन्न करता है आप ( के बाद आप EE2 में नवीनीकृत) ने कहा कि में डेटा को बदलने के लिए उपयोग करना होगा प्रारूप EE2 की मूल के लिए आवश्यक करने के लिए खेतों फ़ाइल फ़ील्ड ये प्रश्न केवल प्रदर्शित होते हैं, नहीं चलाते हैं। विचार यह है कि आप कहीं भी प्रश्नों को सहेजते हैं, ईई 1-> ईई 2 अपग्रेड चलाते हैं, और फिर तैयार होने पर सहेजे गए प्रश्नों को चलाते हैं।

कहने की जरूरत नहीं है, बैकअप, बैकअप, बैकअप। टेम्पलेट कोड किसी भी तरह से आपके साइट डेटाबेस को संशोधित नहीं करता है, और इसका परीक्षण किया गया है और यह दिखाता है कि इसे ठीक से क्या करना चाहिए। हालांकि, जबकि MySQL क्वेरी उत्पन्न करता है (आपके लिए प्रतिलिपि बनाने और मैन्युअल रूप से चलाने के लिए) Brandon recommended in his answer से मिलान करें, मैंने अभी तक उन प्रश्नों को कार्रवाई में परीक्षण नहीं किया है।

+0

बस इसके लिए एक आवश्यकता में भाग रहा है - बहुत धन्यवाद! –

+0

हां! आसपास क्या आता है ... मैंने 2007 में "एक चर्च वेबसाइट बिल्डिंग" ट्यूटोरियल से ईई वापस सीखा, इसलिए मुझे खुशी है कि मैं कुछ वापस योगदान करने में सक्षम था! ;) – Sandwich

+0

हे - बस इसे चलाने में सक्षम होने के लिए चारों ओर हो रही है। स्क्रिप्ट मेरे एनजेन फ़ाइल फ़ील्ड नहीं देख रही है और मैं आपके उदाहरणों में जो SQL देखता हूं उसे उत्पन्न नहीं कर रहा हूं। मैं अभी तक EE1.7.1 में हूं और किसी भी फ़ील्ड प्रकार को परिवर्तित नहीं किया है। nGen/मैट्रिक्स ठीक चल रहा प्रतीत होता है क्योंकि मैं एक नया एनजीएन फ़ाइल फ़ील्ड के साथ एक नया मैट्रिक्स कॉलम जोड़ सकता हूं। –

0

ऐसा करने का सबसे अच्छा तरीका सावधानी से आगे बढ़ना और रास्ते के प्रत्येक चरण में अपने डेटाबेस का बैकअप बनाना है। मैंने पहले इस पर एक ब्लॉग पोस्ट लिखा है लेकिन आगे विस्तारित होगा।

चरण 1: अपने अपग्रेड को चलाने से पहले सभी ngen फ़ील्ड प्रकारों को टेक्स्ट में बदलें, चिंता न करें कि डेटा खो जाएगा नहीं।

चरण 2: आधिकारिक दस्तावेज़ों के अनुसार अगली अभिव्यक्ति ExpressionEngine और फिर प्रत्येक फ़ील्ड में वापस जाएं और उन्हें पहले पार्टी फ़ाइल प्रकार में बदलें।

अगले चरण में डेटाबेस मैनिपुलेशन का थोड़ा सा हिस्सा शामिल है, लेकिन यह सिर्फ कॉपी और पेस्ट है इसलिए चिंता न करें।

चरण 3: बस मामले में आगे बढ़ने से पहले अपने डेटाबेस का बैक अप लें।

चरण 4: यह अगला चरण इस बात पर निर्भर करता है कि आपका मूल एनजीएन फ़ाइल फ़ील्ड मानक चैनल फ़ील्ड या मैट्रिक्स फ़ील्ड में था या नहीं।

अब अपने डेटाबेस में जाएं और अपने फ़ाइल फ़ील्ड आईडी के साथ "एक्स" को बदलें (आप इसे exp_channel_fields से प्राप्त कर सकते हैं), और वाई अपलोड अपलोड प्राथमिकता आईडी के साथ एनजीएन फ़ाइल फ़ील्ड पर सेट किया गया था।

(अपने नियंत्रण कक्ष में अपने अपलोड वरीयता आईडी ढूंढने के लिए, करने के लिए सामग्री> फ़ाइलें> फाइल अपलोड Preferences पर जाएं बाईं कि फाइल अपलोड स्थान से मेल खाने पर आईडी स्तंभ का चयन करें।।)

4a: मानक को अद्यतन करने हैं मैट्रिक्स के लिए, खेतों इस क्वेरी चलाने के बजाय

UPDATE exp_matrix_data 
    SET col_id_X = CONCAT('{filedir_Y}', col_id_X) 
    WHERE col_id_X != '' 
    AND col_id_X NOT LIKE '{filedir_%' 

एक्स == अपने मैट्रिक्स स्तंभ आईडी (आप था प्राप्त कर सकते हैं: चैनल फील्ड्स, इस क्वेरी

UPDATE exp_channel_data 
    SET field_id_X = CONCAT('{filedir_Y}', field_id_X) 
    WHERE field_id_X != '' 
    AND field_id_X NOT LIKE '{filedir_%' 

4 बी का उपयोग exp_matrix_cols से टी), और वाई == आपकी अपलोड वरीयता आईडी।

ब्रैंडन केली और रोब संचेज़ को क्रेडिट।

इसके अतिरिक्त, उसी प्रक्रिया को अन्य ऐड-ऑन के लिए उपयोग किया जा सकता है जो ईई 2 में मौजूद नहीं है। अपग्रेड से पहले टेक्स्ट में कनवर्ट करें और फिर आवश्यक होने पर एक नए समकक्ष फ़ील्ड प्रकार पोस्ट अपग्रेड में कनवर्ट करें। अधिक सहायता के लिए: Click here

संबंधित मुद्दे