خطأ في إعادة البناء مع bookmarks_polymorphic

مرحباً،
لدي خطأ في إعادة البناء:

فشل

Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ فشل مع العودة #<Process::Status: pid 1121 exit 1>
الموقع الذي فشل فيه: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
فشل التنفيذ مع المعلمات {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
فشل الإقلاع برمز الخروج 1

ومع التمرير للأعلى:

PG::DependentObjectsStillExist: خطأ: لا يمكن إسقاط العمود post_id من الجدول bookmarks لأن كائنات أخرى تعتمد عليه
التفاصيل: الزناد bookmarks_polymorphic_data_sync على الجدول bookmarks يعتمد على العمود post_id من الجدول bookmarks
تلميح: استخدم DROP … CASCADE لإسقاط الكائنات التابعة أيضاً.

كيف يمكن حل هذه المشكلة؟

قد ترغب في إضافة الفرع الذي تستهدفه، سواء كان stable أو tests-passed؟

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

مرحباً،

إنها فرع تم اجتياز الاختبارات فيه بشكل طبيعي…
لقد قمت بحل المشكلة عن طريق حذف المشغل يدوياً. لكنني لا أعرف ما إذا كان ذلك سيشكل مشكلة لاحقاً.

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

جميل. يمكنك دائمًا الدخول إلى الحاوية وتشغيل عمليات الترحيل بشكل انتقائي إذا أصبح ذلك مشكلة.

للأسف، عند تثبيت جديد لـ 3.0.0.beta16، لا يوجد مشغل في psql يمكنني حذفه.
ومع ذلك، فإن استعادة النسخة الاحتياطية التي قمت بها من 2.9.0.beta12 تفشل بنفس الخطأ.

ERROR: cannot drop column post_id of table bookmarks because other objects depend on it
DETAIL: trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks

تعديل:
فهمت الآن - تم حذف المشغل في المصدر - استعادة النسخ الاحتياطية بدأت تعمل مرة أخرى - شكراً على التلميح.

@DeviceNull
كيف تمكنت من حذف المشغل؟

أواجه مشكلة مماثلة أثناء ترقية discourse

Caused by:
PG::DependentObjectsStillExist: ERROR:  cannot drop column post_id of table bookmarks because other objects depend on it
DETAIL:  trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

هل يمر أي شخص بمشكلة مماثلة، عندما يفشل الترقية عند ترحيل قاعدة البيانات

فعلت ما يلي، نجحت الترقية!

ابدأ الحاوية، لأنها توقفت أثناء الترقية

./launcher start app
./launcher enter app

ادخل إلى موجه أوامر psql

sudo -u postgres psql discourse

شاهد المشغلات

SELECT tgname FROM pg_trigger;

اسقط المشغل

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

أعد البناء الآن

./launcher rebuild app

إعجاب واحد (1)
  1. عبر الطرفية الخاصة بك (أفترض bash) ابدأ وحدة تحكم mysql داخل الحاوية:
    docker exec -i name_of_your_container mysql

في وحدة تحكم mysql:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

اخرج من وحدة التحكم باستخدام
exit

بعد ذلك، يجب أن يتمكن البرنامج النصي للتحديث من إسقاط العمود ويجب أن تسير الأمور بسلاسة - مع عقد الأصابع.