কেন তৈরি_এট (গ্রাহক_সত্তা টেবিল) আপডেটে পরিবর্তিত হবে?


19

যখন কাঠামো দিকে তাকিয়ে customer_entityটেবিল আমি লক্ষ্য করেছি created_atক্ষেত্র এই বৈশিষ্ট্য আছে: on update CURRENT_TIMESTAMP। সুতরাং প্রতিবার সারি আপডেট হওয়ার সাথে সাথে created_atটাইমস্ট্যাম্প পরিবর্তন হয়।

দেখে মনে হচ্ছে এই বৈশিষ্ট্যটি updated_atমাঠে থাকা উচিত , ক্ষেত্র নয় created_at। আমি জানি এটি বিরল যে EAV কাঠামোর কারণে এই টেবিলটি সরাসরি সংশোধিত হয়েছে, তবে created_atক্ষেত্রটি কখনও সংশোধন করা ভুল মনে হয় ।

এই টেবিলের কাঠামোর কোনও কারণ আছে, বা এটি কেবল একটি বাগ?

সম্পাদনা করুন: আমি এর জন্য ম্যাজেন্টো থেকে একটি নিশ্চিত বাগ রিপোর্ট পেয়েছি। ইস্যু # 27944। দুর্ভাগ্যক্রমে, এটি দেখতে আপনাকে অবশ্যই লগ ইন করতে হবে। http://www.magentocommerce.com/bug-tracking/issue?issue=13882


2
ভাল প্রশ্ন. আমি যোগ হতে পারে যে এই টেবিল একই পরিস্থিতি আছে: cron_schedule, api_user, admin_user, customer_entity_address, downloadable_link_purchased, downloadable_link_purchased_item, index_event, eav_entity log_customer, sales_flat_quote_address, sales_flat_quote, sales_flat_quote_address_item, sales_flat_quote_payment, sales_flat_quote_shipping_rate, sales_recurring_profile। অন্যরাও থাকতে পারে। আমি এক পর্যায়ে আগ্রহ হারিয়েছি, তাদের অনুসন্ধান করার সময়।
Marius

আমি sales_flat_quoteপ্রথমে লক্ষ্য করেছি , তারপরে চেক করেছি customer_entity। আমরা কেবল এটি লক্ষ্য করেছি কারণ আমাদের কিছু রিপোর্টের কোনও ধারণা নেই। এটি কি আসলে একটি বাগ হতে পারে?
রাইয়ের

আমি বিশ্বাস করি এটি কেবল একটি বাগ।
Dmytro জাভালকিন

আমি কি সেখানে কোন উপায়ে কাজ করতে পারি? দুঃখিত আমি একজন নবাগত এবং আমি একই সমস্যার মুখোমুখি হলাম যেহেতু আমি 1.7.0.2 থেকে 1.8.1 এ আপগ্রেড করেছি ডাটাবেসে ক্ষেত্রটি সম্পাদনা করার চেষ্টা করতে আমি প্রায় ভয় পাচ্ছি। আশা করি আপনি সাহায্য করতে পারেন !! ধন্যবাদ জিনাল
জিনাল 7'14

@ জিনাল, আপনার সেরা বিকল্পটি মাইএসকিএল-এর মাধ্যমে পরিবর্তন করা। আরও তথ্যের জন্য মারিয়াসের উত্তরটি পরীক্ষা করে দেখুন এবং আপনার ডাটাবেসে প্রথমে ব্যাকআপ নেওয়ার বিষয়টি নিশ্চিত করুন!
রাইরে

উত্তর:


22

আমি যা পেয়েছি তা এখানে। সমস্যাটি কেবল ম্যাজেন্টো সিই 1.6+ (এবং ইই সংস্করণগুলির সাথে মিলে) appears এটি MySQL এর সাথে মিশ্রণ করে ডিডিএল ব্যবহার করে নতুন ইনস্টল / আপগ্রেড স্ক্রিপ্টগুলির কারণ।
১.6 এর পূর্বে সংস্করণগুলিতে created_atএবং updated_atকলামগুলি দেখতে কেমন:

`created_at` datetime NOT NULL default '0000-00-00 00:00:00',
`updated_at` datetime NOT NULL default '0000-00-00 00:00:00', 

১.6++ এ ডিডিএল দেখতে এইরকম:

    ->addColumn('created_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
        'nullable'  => false,
        ), 'Created At')
    ->addColumn('updated_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, array(
        'nullable'  => false,
        ), 'Updated At')

এবং উত্পন্ন:

`created_at` timestamp NOT NULL COMMENT 'Created At',
`updated_at` timestamp NOT NULL COMMENT 'Updated At',

পার্থক্যটি হ'ল defaultমানটি অনুপস্থিত।
এবং এখানে বর্ণিত হিসাবে ,

ডিফল্ট CURRENT_TIMESTAMP বা আপডেটের উপরে CURRENT_TIMESTAMP উভয়ই নয়, এটি ডিফল্ট ক্রেন অ্যাটটাইমস্ট্যাম্প এবং আপডেট আপডেট বর্তমান উভয়ই নির্দিষ্ট করার মতো।

এবং যেহেতু মাইএসকিউএল কেবলমাত্র একটি টাইমস্ট্যাম্প কলামকে CURRENT_TIMESTAMPডিফল্ট হিসাবে বা এর জন্য মঞ্জুরি দেয় on updateতাই created_atকলামটি এর সাথে শেষ হয়।

এটি অবশ্যই একটি ম্যাজেন্টো বাগ।


1
এটিতে ম্যাজেন্টো থেকে কোনও আপডেট এসেছে? মনে হচ্ছে বাগটি এখনও নতুন অবস্থায় রয়েছে।
লৌরা

@ লরা, উত্তরের বাগ ট্র্যাকিংয়ের লিঙ্কটি এখনও খোলামেলা হিসাবে দেখায় (প্রায় ২ বছর এখন!)।
রাইয়ের

2
ম্যাজেন্টো ১.৯-এ, তৈরি_এ কলামটি বলেছে: created_atটাইমস্ট্যাম্পটি আপত্তি নেই CURRENT_TIMESTAMP মন্তব্য ' ক্রিয়েট এট' এ নষ্ট করা হয়নি। এবং রিলিজ নোটগুলিতে, এটি উল্লেখ করা হয়েছে যে "" গ্রাহক "সাল থেকে" তারিখটি সঠিক is
ম্যাজপাইকো

EE এর জন্য এটি 1.6 `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Created At'
পূর্ববর্তী

4

প্রথমত, ডাটাবেসে কী ঘটছে তা দেখতে মারিয়াসের উত্তর পড়ুন।

আমি কেবল উল্লেখ করতে চেয়েছিলাম যে বেশিরভাগ বিকাশকারীরা যদি তাদের মডেলটি সঠিকভাবে প্রসারিত করে তবে তারা এই সমস্যায় পড়বে না Mage_Core_Model_Abstract। স্ট্যাকটি দেখতে দেখতে:

  1. Your_Model::save কল
  2. Mage_Core_Model_Abstract::save কল
  3. Mage_Eav_Model_Entity_Abstract::save কল
  4. Mage_Eav_Model_Entity_Abstract::_beforeSave কল
  5. Mage_Eav_Model_Entity_Abstract::walkAttributes কল
  6. Mage_Eav_Model_Entity_Attribute_Backend_Time_Created::beforeSave

এটি নিম্নলিখিতগুলি করে:

$attributeCode = $this->getAttribute()->getAttributeCode();
$date = $object->getData($attributeCode);
if (is_null($date)) {
    if ($object->isObjectNew()) {
        $object->setData($attributeCode, Varien_Date::now());
    }
}

কেবলমাত্র নোট করুন যে এটি সিই> = 1.8.x এবং ইই> = 1.13.x উভয় ক্ষেত্রে কিছু লোকেলের জন্য সমস্যা হতে পারে


2

আমরাও এই বাগটি পেয়েছি এবং মনে করি এটি মার্কিন যুক্তরাষ্ট্র এবং ইউরোপীয় তারিখের এনকোডিংয়ের মধ্যে পার্থক্যের ভিত্তিতে রয়েছে।

মার্কিন যুক্তরাষ্ট্রে, তারিখগুলি এমএম-ডিডি-ওয়াইওয়াইওয়াই লেখা হয়। (02-10-2015 = 10 ফেব্রুয়ারী, 2015)। তবে ইউরোপ এবং অন্যান্য অনেক জায়গায়, তারিখগুলি ডিডি-এমএম-ওয়াইওয়াইওয়াই লেখা হয়। (02-10-2015 = 2 শে অক্টোবর 2015, বা 2 অক্টোবর, 2015)।

ম্যাজেন্টো মার্কিন যুক্তরাষ্ট্রে অবস্থিত থাকাকালীন, ইউক্রেনের প্রোগ্রামাররা বেশিরভাগ বিকাশ করেছিলেন। 

আমরা এই বাগটি একটি নিখরচায় Magento এক্সটেনশন দিয়ে স্থির করেছি (যাতে আপনার কোনও Magento কোর কোড পরিবর্তন করতে না হয়)। আমরা এটি নিখরচায় ডাউনলোড হিসাবে আমাদের সাইটে রেখেছি: http://www.CustomerParadigm.com/download/Magento- তারিখ- সুইচ- ফিক্স- এক্সটেনশন.জিপ

আমি আমাদের ব্লগে এটি আরও বিস্তারিতভাবে এখানে inেকে রেখেছি: http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/


1
ব্লগ পোস্ট এবং মডিউলটি এখানে কেবল আমার এসই পোস্ট থেকে টানা হয়েছে: magento.stackexchange.com/a/31225
টাইলার ভি।

-1

সিআর 1.9 সিএ 1.8.1 এ বাগটি ঠিক করেছেন নীচে পার্থক্যটি রয়েছে: এখানে চিত্র বর্ণনা লিখুন


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