الانتقال إلى خادم جديد - خطأ في قاعدة البيانات

نحاول نقل كل شيء إلى خادم جديد، وبعد عملية الترحيل تظهر هذه الرسالة في الأعلى:

عند محاولة تشغيل الأوامر التالية داخل التطبيق:

  # sudo ./launcher enter app
  # rails c
  > user = User.find_by_email("<admin_email>")
  > user.admin = true
  > user.save`

نحصل على الخطأ التالي:

ActiveModel::MissingAttributeError: لا يمكن كتابة سمة غير معروفة ``
من /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activemodel-6.0.2.2/lib/active_model/attribute.rb:206:in with_value_from_database' السبب: ActiveRecord::StatementInvalid: PG::SyntaxError: خطأ: معرف محدد بطول صفر عند أو بالقرب من """" LINE 1: ... = '2020-04-23 16:30:36.173916' WHERE "site_settings"."" = 3 ^ من /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in exec_params’
السبب: PG::SyntaxError: خطأ: معرف محدد بطول صفر عند أو بالقرب من “”“”
LINE 1: … = ‘2020-04-23 16:30:36.173916’ WHERE “site_settings”.“” = 3
^
من /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in `exec_params’

هل لديكم أي أفكار حول كيفية إكمال التثبيت؟ قد يبدو الأمر وكأنه جدول تالف.

هل يمكنك التراجع قليلاً وإخبارنا بمزيد من التفاصيل حول ما تحاول فعله؟ هل هذا قبل استعادة نسخة احتياطية أم بعدها؟ أم أن هذا تثبيت جديد؟

الخطوات التي قمنا بها:

  1. تثبيت أحدث إصدار على الخادم الجديد
  2. تحويل الخادم القديم إلى وضع القراءة فقط، وأخذ نسخة احتياطية
  3. استعادة النسخة الاحتياطية على الخادم الجديد

يحدث الخطأ بعد الخطوة رقم 3، وقد كررنا العملية مرتين.

هل قمت بتعريف بريد إلكتروني للمطور في app.yml؟ هل جربت إعادة بناء الحاوية حتى الآن؟

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

هل قمت بتشغيل ./launcher rebuild app بعد استعادة النسخة الاحتياطية؟ أم دخلت إلى الحاوية وقمت بتشغيل rake db:migrate؟ قد يساعد ذلك، لكن لا يمكننا الجزم حتى نجرب :smiley:

لقد قمت بالفعل بتشغيل تطبيق إعادة بناء المشغل، لكن المشكلة لا تزال قائمة. هل يجب تشغيل أمر rake من الخادم أم من داخل التطبيق (launcher enter app)؟

./launcher rebuild app سيقوم بنفس الشيء.

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

نعم، الخادم السابق لا يزال يعمل. بعد التحقيق في المشكلة بعمق أكبر، يحدث هذا حتى في الخادم القديم. تظهر نفس الرسالة الخطأ. :face_with_raised_eyebrow:

هل يجب أن أحاول تفريغ جدول site_settings وإعادة تعيينه يدويًا؟ هل سيعمل Discourse بعد حذف جميع السجلات من هذا الجدول يدويًا من PostgreSQL؟

ينبغي عليك تجنب القيام بذلك إلا إذا كنت تعرف ما تفعل.

قد ترغب في النشر في #السوق للحصول على مساعدة أكثر تقدماً. يبدو للأسف أن لديك تثبيتاً معطلاً.