فشل الترحيل عند الترقية إلى الأحدث من حوالي 3 أسابيع

فشل 1 ترحيل!

فشل ترحيل الافتراضي
#<StandardError: حدث خطأ، تم إلغاء جميع عمليات الترحيل اللاحقة:

PG::UniqueViolation: خطأ: قيمة المفتاح المكررة تنتهك قيد المفتاح الفريد "index_user_emails_on_email"
التفاصيل: المفتاح (lower(email::text))=(talk@remobjects.com<mailto:talk@remobjects.com) موجود بالفعل.

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql/database_st

== 20211201221028 MigrateEmailToNormalizedEmail: ترحيل ====================
-- execute("UPDATE user_emails\nSET normalized_email = REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')\nWHERE (normalized_email IS NULL OR normalized_email <> (REPLACE(REGEXP_REPLACE(email,'([+@].*)',''),'.','') || REGEXP_REPLACE(email, '[^@]*', '')))\n  AND (id >= -2 AND id < 7155)\n")
ترحيل secondsite
Docker Manager: فشل الترقية
#<RuntimeError: RuntimeError>

هل يعرف أحد ما يمكنني فعله لتجاوز هذا؟

أوه … لقد رأينا هذا من قبل في ترقيات الإصدارات الرئيسية لـ PG. عمل @saj مؤخرًا على شيء هنا.

القصة الطويلة هي أنه في بعض ترقيات PG، يتغير ترتيب قواعد البيانات تحتك وبسبب تغييرات libc. ليس لديك خيار سوى إعادة الفهرسة.

ما حدث لك هو:

  1. لقد أجريت ترقية رئيسية
  2. أصبحت الفهارس الخاصة بك فاسدة إلى حد ما
  3. تم إدراج مستخدم ثانٍ لـ talk@remobjects.com - لديك الآن صف مكرر على الرغم من أن الفهرس لا يسمح بذلك.
  4. نلمس الصف ويسلط الضوء على هذه المشكلة لأنه لا يمكنه تحديث عمود غير ذي صلة

الحل هو:

  • ابحث عن معرفات المستخدمين للمستخدمين الاثنين اللذين يتشاركان البريد الإلكتروني talk@remobjects.com.
  • إما حذف أو إعادة تسمية البريد الإلكتروني على أحدهما
  • المتابعة كما هو مخطط لها
  • إجراء إعادة فهرسة كاملة لقاعدة البيانات على وجه السرعة لمعالجة المشكلات الأخرى

لقد حلّت مشكلتي، لكن “الترقية” قد انتهت بالفعل (ولم تعد هناك تحديثات)؛ هل أحتاج إلى القيام بأي شيء خاص لإعادة تشغيل هذه الترحيلات؟ لقد قمت بحذف رسائل البريد الإلكتروني المكررة بالطبع.

نعم، تأكد من تشغيل إعادة فهرسة قاعدة البيانات

جرب:

REINDEX DATABASE VERBOSE

من الضروري أن تفعل ذلك لضمان أن تكون جميع فهارسك في حالة جيدة.

إعجاب واحد (1)

هل هناك أي طريقة للتحقق من أن منتدى ما “صحي” من وقت لآخر، قبل مواجهة هذا النوع من المشاكل؟

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.