Pim-community-dev: 2.1.8: إدخال مكرر للمفتاح "searchunique_idx" عند استيراد المنتجات باستخدام CLI

تم إنشاؤها على ٦ أبريل ٢٠١٨  ·  3تعليقات  ·  مصدر: akeneo/pim-community-dev

عندما أقوم باستيراد موجز باستخدام SKU فقط وأعمدة الصور في Akeneo باستخدام سطر الأوامر ، يفشل الاستيراد باستخدام الأمر التالي:

[2018-04-06 15:35:24] batch.ERROR: Encountered an error executing the step: 
An exception occurred while executing 'INSERT INTO pim_catalog_completeness 
(ratio, missing_count, required_count, locale_id, channel_id, product_id) VALUES (?, ?, ?, ?, ?, ?)'
with params [100, 0, 1, 39, 1, 4404]:  
SQLSTATE[23000]: Integrity constraint violation: 
1062 Duplicate entry '1-39-4404' for key 'searchunique_idx' [] []

هل يعرف أي شخص ما قد يسبب هذه المشكلة؟ أو كيف يمكنني إصلاحه؟ الجزء الغريب هو أن المفتاح يقترح أنه سيكون هناك أيضًا منتج برقم 4404 في قاعدة البيانات الخاصة بي في ذلك الجدول ، لكن لا يوجد.

تحديث: عند الفحص الإضافي ، لاحظت أن الملف الذي تم تحميله بواسطة العميل به تكرارات متعددة لنفس SKU. هل يمكن أن يكون هذا هو سبب هذه المشكلة؟ هل هذه الأشياء تتم في صفقة واحدة؟ (وهو ما يمكن أن يفسر سبب عدم تمكني من العثور على المعرف المتصادم في قاعدة البيانات).

التعليق الأكثر فائدة

لقد واجهت هذه المشكلة في سيناريوهين.

بيانات الاستيراد مكررة
اقتراحك صحيح: عندما يكون لديك مثيلات متعددة من نفس SKU في ملف الاستيراد الخاص بك ، فإنك تحصل على هذا الخطأ.

تحتوي فهارس البحث المرنة على بيانات المنتج التي تمت إزالتها
الحالة الأخرى التي واجهت فيها هذه المشكلة كانت عندما احتفظ elasticsearch بسجل لمنتج محذوف في فهارسه ويقوم بطريقة ما "بتغذية" نص الاكتمال الذي يتم تشغيله بعد استيراد نماذج المنتج.
كان هذا إما بسبب إزالة نموذج المنتج وبعد ذلك لم يقم Akeneo بإزالة جميع بيانات ES لمتغيرات المنتج الأساسية ، أو لأنني قمت بإزالة سجل يدويًا من قاعدة البيانات.
لست متأكدًا تمامًا من أي من الاثنين تسبب في ذلك ، ولكن قد تكون الحالة الثانية ومن ثم تكون خطأي.

ومع ذلك ، كان من الصعب جدًا تصحيح الأخطاء ، لأنني لم أتمكن من العثور على أي سجل مكرر لهذه المنتجات في أي مكان في قاعدة البيانات الخاصة بي ، ولا استيراد الملفات.

الحل:
من سطر الأوامر ، تخلص من جميع فهارس ES:
bin/console akeneo:elasticsearch:reset-indexes
ثم إعادة البناء:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

ال 3 كومينتر

لقد واجهت هذه المشكلة في سيناريوهين.

بيانات الاستيراد مكررة
اقتراحك صحيح: عندما يكون لديك مثيلات متعددة من نفس SKU في ملف الاستيراد الخاص بك ، فإنك تحصل على هذا الخطأ.

تحتوي فهارس البحث المرنة على بيانات المنتج التي تمت إزالتها
الحالة الأخرى التي واجهت فيها هذه المشكلة كانت عندما احتفظ elasticsearch بسجل لمنتج محذوف في فهارسه ويقوم بطريقة ما "بتغذية" نص الاكتمال الذي يتم تشغيله بعد استيراد نماذج المنتج.
كان هذا إما بسبب إزالة نموذج المنتج وبعد ذلك لم يقم Akeneo بإزالة جميع بيانات ES لمتغيرات المنتج الأساسية ، أو لأنني قمت بإزالة سجل يدويًا من قاعدة البيانات.
لست متأكدًا تمامًا من أي من الاثنين تسبب في ذلك ، ولكن قد تكون الحالة الثانية ومن ثم تكون خطأي.

ومع ذلك ، كان من الصعب جدًا تصحيح الأخطاء ، لأنني لم أتمكن من العثور على أي سجل مكرر لهذه المنتجات في أي مكان في قاعدة البيانات الخاصة بي ، ولا استيراد الملفات.

الحل:
من سطر الأوامر ، تخلص من جميع فهارس ES:
bin/console akeneo:elasticsearch:reset-indexes
ثم إعادة البناء:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

حصلت على نفس المشكلة. ساعدني الحل المقدم من @ wigman . شكرا لك
حدثت المشكلة بسبب نسخ DB من بيئة إلى أخرى ، كان الفهرس بالتأكيد ليس هو نفسه.

الحل الذي اقترحه wigman يعمل فقط مع المتاجر الصغيرة التي تحتوي على بضعة آلاف من المنتجات.
الأمر bin/console akeneo:elasticsearch:reset-indexes يزيل كل شيء من الفهرس ومن ثم عليك الانتظار بعض الوقت حتى تعود البيانات. إذا كان لديك طرازات أكثر من 150 ألف منتج ومنتج 1 كيلو بايت ، فهذا ليس خيارًا ، لأن reindex يمكن أن يستغرق ما يصل إلى 4 ساعات.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات