ম্যাজেন্টো ডেটাবেস আপগ্রেড একটি "লেনদেন" এ ঘটে?


12

আমাদের এই সমস্যাটি এটিএম:

একজন ক্লায়েন্ট তার দোকান সিই 1.4 থেকে সিই 1.8 এ উন্নীত করে। ফাইল-আপগ্রেড ভাল হয়েছে, এবং ডাটাবেস আপগ্রেড আমাদের ডেভলপমেন্ট মেশিনেও ভাল চলেছে।

যখন আমরা ক্লায়েন্টের লাইভ-ডিবি তার লাইভ মেশিনে আপগ্রেড করার চেষ্টা করি (1.8-ম্যাজেন্টোটিকে ডাটাবেসে সংযুক্ত করুন এবং এটি ব্রাউজারে খুলুন), প্রক্রিয়াটি কিছু সময়ের জন্য চলবে বলে মনে হয় এবং 500 ত্রুটিতে শেষ হয়।

পিএইচপি ত্রুটি লগ খালি; এটি ভাগ করা হোস্ট হিসাবে, আমরা অ্যাপাচি বা মাইএসকিএল সেটিংস পরিবর্তন করতে পারি না; হোস্টার, যদিও "বিশেষায়িত ইম ম্যাজেন্টো হোস্টিং", সেটিংস পরিবর্তন করতে রাজি নয় এবং আমাকে বলে যে 500 টির ত্রুটি ঘটলে বারবার ব্রাউজার-উইন্ডো রিফ্রেশ করে ডেটাবেস-আপগ্রেড শেষ করতে পারি, কারণ ম্যাজেন্টো তখন ছোট পদক্ষেপে আপগ্রেড হবে । এটি কয়েক ঘন্টা চলতে পারে।

আমার প্রশ্ন এখন:
- এটা কি সত্য? আমি ভেবেছিলাম ডাটাবেস-আপগ্রেডের জন্য বর্গ-বিবৃতিগুলি কোনও লেনদেনের মধ্যে আবৃত হবে, যাতে কিছু ভুল হয়ে যায় তবে এগুলি আবার ঘুরিয়ে দেওয়া যেতে পারে।
- উত্তরটি কি কোনও উত্তর দিতে পারে যেখানে আমি এই প্রশ্নের উত্তর খুঁজতে কোডটিতে সন্ধান করতে পারি?

আপনার সময় জন্য ধন্যবাদ!


2
সম্ভবত প্রাসঙ্গিক: একটি নতুন n98-magenrun কমান্ড যা আপনাকে একবারে মাইগ্রেশন স্ক্রিপ্টগুলি চালাতে দেয়। github.com/netz98/n98-magerun/pull/274
অ্যালান ঝড়

উত্তর:


8

এটা কি সত্য? আমি ভেবেছিলাম ডাটাবেস-আপগ্রেডের জন্য বর্গ-বিবৃতিগুলি কোনও লেনদেনের মধ্যে আবৃত হবে, যাতে কিছু ভুল হয়ে যায় তবে এগুলি আবার ঘুরিয়ে দেওয়া যেতে পারে।

আপনার ইঞ্জিনিয়ারিং প্রবৃত্তিগুলি দুর্দান্ত, তবে ব্যবসায়িক স্টার্টআপ প্রোগ্রামিংয়ের বাস্তব জগতে যা ঘটে তা আরও জটিল / কুরুচিপূর্ণ।

ম্যাজেন্টোর সেটআপ রিসোর্স সিস্টেম কোনও লেনদেনে স্বতন্ত্র স্ক্রিপ্টগুলি মোড়ায় না। এর অনেকগুলি কারণ রয়েছে তবে আমি সর্বদা প্রাথমিকভাবে ধরে নিয়েছি যে ম্যাগেন্টো মাইএসকিউএল এর সাথে স্পষ্টভাবে আবদ্ধ জীবন শুরু করেছিল এবং মাইএসকিউএলে অনেকগুলি / বেশিরভাগ ডেটা সংজ্ঞা বিবৃতি ( ALTER TABLEইত্যাদি) একটি অন্তর্নিহিত প্রতিশ্রুতি দেয়

আপনি স্বতন্ত্র সেটআপ রিসোর্সটি খুঁজে পাওয়ার সময় কখনও কখনও লেনদেন ব্যবহার করেন।

#File: app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-1.3.99-1.4.0.0.php
$installer->getConnection()->beginTransaction();
$installer->run("
        UPDATE {$installer->getTable('sales_flat_order')} AS o, {$installer->getTable('sales_order_entity_varchar')} AS od
    //...    

সিস্টেম নিজেই স্ক্রিপ্টগুলি চালায় এবং সর্বোত্তম আশা করে।

আপনি যদি এই সংস্থানগুলি চালিত কোডটিতে আগ্রহী হন তবে শুরু করার সেরা জায়গাটি সম্ভবত এখানেই রয়েছে

#File: app/code/core/Mage/Core/Model/Resource/Setup.php
protected function _modifyResourceDb($actionType, $fromVersion, $toVersion)
{
    //...
}

_modifyResourceDbপদ্ধতি এক যে প্রকৃত সেটআপ রিসোর্স স্ক্রিপ্ট রয়েছে

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

        $result = $this->run($sql);
    } else {
        $result = true;
    }
    break;

আপনার সমস্যার খুব হ্যাকি সমাধান হ'ল একটি অস্থায়ী কোর-হ্যাক / কোড-পুল-ওভাররাইড যা স্পষ্টতই 5-10 অন্তর্ভুক্ত থাকার পরে উপস্থিত হয়েছিল এবং এটি আবার চালানো হবে। এটি কোনও সেটআপ রিসোর্স স্ক্রিপ্টের অর্ধেক পথে জামিনের সুযোগ হ্রাস করবে।

আরও ভাল সমাধান এবং আমার ব্যক্তিগত "সম্ভবত একদিন" প্রকল্পগুলির একটি কাস্টম স্ক্রিপ্ট হবে যা প্রয়োগের প্রয়োজনীয় আপডেটগুলি যাচাই করতে, তাদের তালিকাভুক্ত করতে এবং ব্যবহারকারীদের একে একে চালিয়ে যেতে দেয় সেজন্য ম্যাগানো মুল পদ্ধতি ব্যবহার করেছিল।


দুর্দান্ত উত্তর এবং দুর্দান্ত অন্তর্দৃষ্টি, ধন্যবাদ; আমার সমস্যাটি কীভাবে সমাধান করা যায় তার টিপসের জন্যও। আমি ডেভ-সার্ভারে ডাটাবেস আপগ্রেড করে নতুন সিস্টেমে "রেডি" ডিবি আমদানি করে শেষ করেছি।
সিমোথেসোরেরার

2
এফডাব্লুআইডাব্লু, যে "সম্ভবত একদিন" প্রকল্পটি সিস্টেম হয়ে উঠল: সেটআপ: এন98-মেরেরুন ম্যাগেরুন.নেমে
অ্যালান স্টর্ম

যখন আপনি @ অ্যালানস্টর্ম;) এর স্ক্রিপ্টটি প্রস্তুত পেয়েছেন তখন আমাকে জানতে দিন
fkoessler

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