يحدث هذا أيضًا في تثبيت رسمي بسيط لـ discourse_docker، باستخدام اختبار استعادة آلي عبر خط الأنابيب كل صباح من أيام الأسبوع. ظهر خطأ مشابه فجأة في خط الأنابيب الفاشل.
I, [2026-05-20T07:59:01.413128 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle
exec rake db:migrate'
2026-05-20 07:59:09.214 UTC [1576] discourse@discourse ERROR: relation "translation_overrides" does not exist at character 523
2026-05-20 07:59:09.214 UTC [1576] discourse@discourse STATEMENT: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS comment,
attidentity AS identity,
attgenerated as attgenerated
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
WHERE a.attrelid = '"translation_overrides"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
2026-05-20 07:59:13.167 UTC [1627] discourse@discourse ERROR: schema "discourse_functions" already exists
2026-05-20 07:59:13.167 UTC [1627] discourse@discourse STATEMENT: CREATE SCHEMA discourse_functions;
psql:/var/www/discourse/db/structure.sql:16: ERROR: schema "discourse_functions" already exists
rake aborted!
كان السبب الجذري عدم تطابق الإصدار بين النسخة الاحتياطية المستعادة وكود الحاوية.
يحتوي أحدث كود لـ Discourse على نموذج يشير إلى جدول translation_overrides، لكن قاعدة بيانات الإنتاج (من النسخة الاحتياطية) تعمل على إصدار أقدم حيث إما أن هذا الجدول غير موجود بعد أو له اسم مختلف.
ما نجح معي هو إعادة البناء أولاً (مما ينشئ المخطط من الصفر)، ثم استعادة النسخة الاحتياطية. تستخدم عملية الاستعادة آلية الاستعادة المدمجة في Discourse، والتي تقوم بحذف قاعدة البيانات وإعادة إنشائها بشكل صحيح.