স্বচ্ছতা সীমাবদ্ধতা লঙ্ঘন: 1062 'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID' কী এর জন্য সদৃশ প্রবেশ


13

আমি কোনও বণিককে কিছু ব্যর্থ অর্থ প্রদানের লেনদেনের (একটি ভারী অর্ডার দিবসের সময়) মূল কারণটি সন্ধান করতে সহায়তা করছি, যা নিম্নলিখিত ত্রুটির সাথে ব্যর্থ হয়েছে

এসকিউএসএলসেট [২৩০০০]: স্বতন্ত্রতা সীমাবদ্ধতা লঙ্ঘন: 1062 ডাব্লিকেট এন্ট্রি '51986' কী'র জন্য 'ইউএনকিউএসএলএস_এফএলএআইএনএলভিআইসিআইআইএনআইআর'

UNQ_SALES_FLAT_INVOICE_INCREMENT_IDসূচক একটি অনন্য চাবিকাঠি increment_idকলাম sales_flat_invoiceটেবিল। আমি যখন increment_idত্রুটিতে উল্লিখিতটির জন্য এই টেবিলটি 51986দেখি (তখন ) আমি দেখতে পাচ্ছি যে ইতিমধ্যে increment_idএটির সাথে একটি চালান রয়েছে এবং এটি কোনও ভিন্ন গ্রাহকের দেওয়া অর্ডারের জন্য।

আমার সম্পর্কিত 2 টি প্রশ্ন

  • মেগেন্তো সিই তে কোথায় 1.9.0.1 সাধারণত একটি চালান আইডি তৈরি করা হয়?

  • স্টক ম্যাজেন্টো সিই 1.9.0.1 একসাথে একই আদেশের জন্য সংঘর্ষে চালান আইডি সহ জানা সমস্যা আছে?

আমি বর্ধিত আইডিটির 51986অর্থ বর্ধিত আইডিটি বুঝতে পারি যে বর্ধিত আইডি ইনস্টল করার জন্য কিছু প্রকারের এক্সটেনশন রয়েছে, তবে আমি নিশ্চিত করতে চাই যে এই পথে খুব দূরে যাওয়ার আগে বিজ্ঞান ডাব্লু / আর / টি নেই isn't


1
ডিবাগ পয়েন্ট হিসাবে Mage_Eav_Model_Entity_Type :: fetchNewIncrementId () যুক্ত করা হচ্ছে।
অ্যালান ঝড়

1
আমি এটি আগেও দেখেছি, তবে এটি save()কোনও নির্দিষ্ট পর্যবেক্ষক ইভেন্টে মেথড কল দেওয়ার কারণে হয়েছিল যা কখনও কখনও কোডটি পর্যালোচনার আগের দিনগুলিতে এই সমস্যা তৈরি করে;)
ইরফান

@ অ্যালানস্টর্ম, কৌতূহলের বাইরে, কেন ইভা সত্তায় intoুকছে, আমি মনে করি, চালান একটি ফ্ল্যাট মডেল।
পূর্বক

আমি বিশ্বাস করি এই সঙ্গে ডিফল্ট Magento ঘটতে পারে stackoverflow.com/questions/25918091/...
Fooman এ ক্রিস্টফ

1
আমি এটি পুরোনো জানি, তবে কি কোনও কারণে এজেন্সি_স্টিটি_স্টোর টেবিলটি অনুলিপি করা হয়েছিল .. এটি একটি সাধারণ ত্রুটি, যেখানে শেষ অর্ডার আইডি বর্তমান স্থিত ক্রমের সাথে মেলে না। সুতরাং ম্যাজেন্টো অর্ডার সারণিতে কোন আইডি toোকাতে হবে তা নির্ধারণ করতে eav_entity_store টেবিলটি ব্যবহার করে এবং এই ক্ষেত্রে এটি ইতিমধ্যে বিদ্যমান। এছাড়াও, নোট করুন এটি FooMan অর্ডার নম্বর এক্সটেনশনে খুব সাধারণ সমস্যা কারণ এটি এই চেকটিকে বাইপাস করতে পারে এবং এই সমস্যাটিকে নীল থেকে বের করে দিতে পারে।
রব

উত্তর:


3

অর্ডার, চালান, ক্রেডিটমেমো, শিপিংটি 1.6 (?) অবধি EAV ছিল

@ প্রীতিক চালান একটি ইএভি মডেল ছিল এবং ইনক্রিমেন্ট_আইডি এখনও রয়েছে।

বৃদ্ধি_আইডি সৃষ্টি এবং সমস্যা

বৃদ্ধি আইডি এখানে তৈরি করা হয়

\Mage_Eav_Model_Entity_Attribute_Backend_Increment which calls
\Mage_Eav_Model_Entity_Abstract::setNewIncrementId which calls
\Mage_Eav_Model_Entity_Type::fetchNewIncrementId

আমি ধরে নেব কারণ শেষ পদ্ধতিতে লেনদেন শুরু হয়েছে (এবং টেবিল / সারিটি লক করা হয়নি) দ্বিতীয় অর্ডার তৈরির কাজটি পাস হতে পারে এবং একইভাবে নতুন তৈরি হওয়াটি নিতে পারে increment_id

সমাধান

আমি ধরে নেব, আপনি যদি পড়ার আগে সারি / টেবিলটি লক করেন তবে আপনি এড়াতে পারবেন যে আপনি কোনও নতুন ইনক্রিমেন্ট_আইডি না লিখে অন্য কোনও প্রক্রিয়া টেবিলটি পড়ে reads এটি সাহায্য করতে পারে: লোড () ব্যবহারের পরে আমি কীভাবে একটি সারি লক করব?

তবে আমি আশঙ্কা করি যে সারিটি লক করা খারাপ পারফরম্যান্স হ্রাস করে।


1
এই পোস্টটি এবং @ ফ্যাবিয়ানটি কেবল দেখেছি, এটি জেনে রাখা ভাল। SE উত্তরের ক্ষেত্রে কারও উল্লেখ করা থাকলে বিজ্ঞপ্তিগুলিও ট্রিগার করা উচিত।
প্রীতেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.