আপনার মডিউলটির জন্য সেটআপ স্ক্রিপ্টগুলি কীভাবে ব্যবহার করবেন?


22

আমি বুঝতে পেরেছি, আপনি নিজের মডিউলের জন্য সেটআপ স্ক্রিপ্টগুলি নিজের মডিউলের etc / config.xML ফাইলে <global>এই জাতীয় জায়গার মধ্যে ঘোষণার মাধ্যমে ব্যবহার করতে পারেন :

<resources>
    <catalog_setup>
        <setup>
            <module>Mage_Catalog</module>
            <class>Mage_Catalog_Model_Resource_Setup</class>
        </setup>
    </catalog_setup>
</resources>

কিছু মডিউল তারপর ফাইল ব্যবহার mysql4-install-0.0.1.phpযেহেতু অন্যদের ব্যবহার install-0.0.1.php। সুতরাং আমি কখন ফাইলের নামের সামনে mysql4 ব্যবহার করব এবং কখন এটি ব্যবহার করব না?

এছাড়াও, যখন আমার সেটআপ স্ক্রিপ্টটি চলছে না তা অনুসন্ধান করার জন্য কী চলছে?


1
আপনার সেটআপটি আবার চালানোর জন্য আপনি কোর_সোর্স সারণীতে আপনার এন্ট্রি মোছার বিষয়টি নিশ্চিত করুন।
রিক কুইপার্স 25'13

অন্যান্য উত্তরগুলির পাশাপাশি এটি ম্যাজেন্টোকমার্স.com/images/uploads/RDBMS_Guide2.pdf পড়তে আগ্রহী হতে পারে এটি ১. with এর সাথে পরিবর্তনের পিছনে চিন্তাভাবনাগুলি বর্ণনা করে বলে আমি মনে করি কেবল যা আছে তা না জানাই সর্বদা ভাল পরিবর্তিত হয়েছে তবে কেন।
সেলডওয়েলার

উত্তর:


21

ম্যাজেন্টো ১.6 এবং তার থেকে উপরের দিকে মাল্টি-আরডিবিএমএস যোগ করার কারণে আপনাকে আর আরকিউএসএল ৪ ব্যবহার করতে হবে না।

এটি কেন চলছে না তা অনুসন্ধান করার জন্য, আপনি ব্যতিক্রম or লগ বা সিস্টেম.লগ পরীক্ষা করতে পারেন, হয়তো ম্যাজেন্টো আপনার সেটআপ ক্লাসটি খুঁজে পাচ্ছে না। ইনস্টল স্ক্রিপ্ট তৈরি করা যদিও বেশ সোজা।

অ্যালান স্টর্মের গাইডও পরীক্ষা করে দেখুন: http://alanstorm.com/magento_setup_resources


11

@ ইফফান সাইফ হিসাবে, ম্যাজেন্টো ১.6 থেকে মাল্টি-আরডিবিএম সমর্থন পেয়েছে। তবে বাস্তব বিশ্বে আমি কেবল মাইএসকিএল ব্যাকেন্ড জানি।

এটি বুঝতে গুরুত্বপূর্ণ, যে ম্যাজেন্টোতে বিভিন্ন ব্যাকেন্ডের জন্য আলাদা আলাদা ইনস্টল / আপগ্রেড / ডেটা স্ক্রিপ্ট থাকতে পারে। আপনি যদি একটি বিশেষ সূচক-প্রকার চান যা মাইএসকিএল দ্বারা সমর্থিত তবে মানক-এসকিউএল দ্বারা নয় তবে আপনি একটি মাইএসকিএল 4-ইনস্টল-1.0.0.php স্ক্রিপ্ট প্রয়োগ করতে পারেন। যদি আপনার স্ক্রিপ্টটি জেনেরিক হয় তবে ইনস্টল -০.০.০. পিএইচপি ব্যবহার করুন

আপনি যদি Mage_Core_Model_Resource_Setup এ একবার দেখে নিই তবে আমি দুটি আন্তঃসংশ্লিষ্ট জিনিস পেতে পারি:

  1. আপনি আপনার ফাইলগুলির নাম (% s -)% s-VERSION can (পিএইচপি | এসকিউএল) রাখতে পারেন
  2. আপনার যদি দুটি ইনস্ট্রিপ্ট স্ক্রিপ্ট থাকে (তবে ডেটা স্ক্রিপ্টগুলির সাথে থাকে তবে এটি একই (অ্যাপ / কোড / কোর / ম্যাজ / কোর / মডেল / রিসোর্স / সেটআপ.পিএফপি: 520)) ম্যাজেন্টো জেনেরিক স্ক্রিপ্টের উপরে বিশেষ স্ক্রিপ্টটিকে পছন্দ করে (এক হিসাবে আশা করবে)

অ্যাপ্লিকেশন / কোড / কোর / পুরোনো যাদুকর / কোর / মডেল / রিসোর্স / Setup.php: 488

$regExpDb   = sprintf('#^%s-(.*)\.(php|sql)$#i', $actionType);
$regExpType = sprintf('#^%s-%s-(.*)\.(php|sql)$#i', $resModel, $actionType);

while (false !== ($file = $handlerDir->read())) {
    $matches = array();
    if (preg_match($regExpDb, $file, $matches)) {
        $dbFiles[$matches[1]] = $filesDir . DS . $file;
    } else if (preg_match($regExpType, $file, $matches)) {
        $typeFiles[$matches[1]] = $filesDir . DS . $file;
    }
}
[...]
foreach ($typeFiles as $version => $file) {
    $dbFiles[$version] = $file;
}

সতর্কতা অবলম্বন করুন, আপনি যদি আপনার স্ক্রিপ্টটির নাম দেন তবে .sqlএটি সরাসরি ডাটাবেসে ডাকা হয়:

// app/code/core/Mage/Core/Model/Resource/Setup.php:621
switch ($fileType) {
    case 'php':
        $conn   = $this->getConnection();
        $result = include $fileName;
        break;
    case 'sql':
        $sql = file_get_contents($fileName);
        if (!empty($sql)) {

            $result = $this->run($sql);

এছাড়াও, যখন আমার সেটআপ স্ক্রিপ্টটি চলছে না তা অনুসন্ধান করার জন্য কী চলছে?

আমি আমার ইনস্টল / আপগ্রেড ফাইলের শুরুতে একটি ডাই ('স্যাডফ') পছন্দ করি, কারণ এটি কল করা হলে আমি এটি একাধিকবার চালাতে পারি, তাই আমি যাচাই করতে পারি, আমি যে সমস্ত ভেরিয়েবলগুলি সেট করেছিলাম তার পরিবর্তে কিছু পরিবর্তন হওয়ার আগেই হয় check ডাটাবেস আমি যদি পর্দায় 'স্যাডফ' দেখি তবে আমি জানি, স্ক্রিপ্টটি চলছে।

আমি লোডগুলি ম্যাজেন্টো (সাদফের পরিবর্তে) করি, এটি ডিবাগ করার সময় এসেছে, আমার দুটি মানক ত্রুটি হ'ল:

  1. আমি কনফিগারেশনে স্ক্রিপ্ট যুক্ত করতে ভুলে গেছি
  2. আমার ডিরেক্টরিটি sql/ভুলে গেছে, যেমন sql/install-1.0.0.phpপরিবর্তেsql/my_module_setup/install-1.0.0.php

এবং যেহেতু আমার মনে হয় এটি এখানে ফিট করে, আপনার ভেরিয়েবল নামগুলি সম্পর্কে সতর্কতা অবলম্বন করুন: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html

আপডেট করুন @ রাউভেন-রাইকার টুইটারের মাধ্যমে যুক্ত করেছেন যে ডেটা- এবং মিস করা mysql4- ম্যাজেন্টো ১.6 এ যুক্ত হয়েছিল। আপনার যদি পিছনের দিকে সামঞ্জস্যতা প্রয়োজন সাবধান!


3

যদি আপনার স্ক্রিপ্টটি চালু না থাকে তবে আপনার মডিউলগুলির সংস্করণটি আপনার সেটআপ-স্ক্রিপ্টের সংস্করণটির সাথে মিলছে কিনা তাও আপনার পরীক্ষা করা উচিত।

<modules>
    <Your_Module>
        <version>0.0.1</version>
    </Your_Module>
</modules> 

1

যদি আপনার স্ক্রিপ্টটি চলমান না থাকে তবে কোর_সোর্স এবং ফ্লাশ ক্যাশে সংস্করণ নম্বরটি পুনরায় সেট করুন। Magento সংস্করণগুলি আগে থেকেই মনে হয় এবং সমস্ত ক্যাশে সক্ষম থাকা অবস্থায় সেটআপ স্ক্রিপ্টগুলি চালানো মিস করে। যেহেতু আমরা সবাই ক্যাশে অক্ষম নিয়ে কাজ করি, আমরা এটি লক্ষ্য করতে পারি না, তবে ক্যাশে সক্ষম করা থাকলে আপলোডের মাধ্যমে লাইভ সাইটে ইনস্টল করা কাজ করবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.