مرحبًا،
أحاول إعداد خادم Discourse يستضيفه زوج من الخوادم يعملان كزوج احتياطي (failover pair) — ولتحقيق ذلك، أحتاج إلى أن يتصلا بنفس قاعدة البيانات. لدي بالفعل خادم PostgreSQL يعمل في مكان آخر، لذا اتبعت التعليمات هنا، ويبدو أن الاتصال يتم بنجاح. ومع ذلك، عندما أحاول إعادة بناء التطبيق، أواجه الخطأ التالي:
I, [2019-07-23T17:33:20.623719 #14] INFO – : > cd /var/www/discourse && su discourse -c ‘bundle exec rake
db:migrate’
rake aborted!
StandardError: حدث خطأ، وتم إلغاء هذا الانتقال وجميع الانتقالات اللاحقة:
PG::UndefinedTable: ERROR: العلاقة “selected” غير موجودة
LINE 7: OR (t.closed AND tsp.execute_at >= now())
^
: WITH selected AS (
SELECT tsp.id
FROM topic_status_updates tsp
JOIN topics t
ON t.id = tsp.topic_id
WHERE tsp.execute_at < now()
OR (t.closed AND tsp.execute_at >= now())
)
UPDATE topic_status_updates
SET deleted_at = now(), deleted_by_id = -1
WHERE id in (SELECT * FROM selected)
عندما أذهب إلى قاعدة بيانات Discourse، لا توجد جدول “selected” موجود. ما الذي يمكنني فعله لحل هذه المشكلة؟ كان لدي مثيل يعمل عندما كان محليًا على خادم واحد فقط — بدأت هذه المشكلة تحدث فقط بعد نقل قاعدة البيانات.