مشاكل في ترقية postgres 15

مرحباً،
لقد قمت بتشغيل تحديث بعد عام تقريباً، مما أدى إلى الانتقال من pg 13 إلى 15.

أحاول تشغيل الأمر المعطى باستخدام LC_LANG الخاص بي ولكنه لا يعمل، أحصل على FATAL: data directory “/shared/postgres_data” does not exist. وبالفعل هو غير موجود… هل لدى أي شخص فكرة؟

يجب أن يكون هناك /shared/postgres_old.

تغيير LC_LANG الخاص بك هو على الأرجح فكرة سيئة.

لقد واجهت نفس الخطأ الذي واجهته للتو، وهو “/bin/bash: warning: setlocale: LC_ALL: cannot change locale” عندما حاولت تشغيل launch rebuild app، مما قادني في النهاية إلى هذا المنشور، هل تمكنت من حله في النهاية؟ أوامر docker run قادتني فقط إلى المزيد من المشاكل، كما ذكرت أعلاه.

لقد أضفت تعيينًا \-v /var/discourse/shared/standalone:/shared والآن تقدمت قليلاً. من الغريب أنه غير موجود على أي حال. قد تكون المشكلة هي أن “تطبيقي” لا يزال عالقًا عند إصدار ما في عام 2024 و “إعادة البناء” لا تعمل. مجرد تخمين…

لذا كان لدي هذا في ملف app.yml الخاص بي وكان يعمل بشكل جيد:

env:
  LC_ALL: fr_BE.UTF-8
  LANG: fr_BE.UTF-8
  LANGUAGE: fr_BE.UTF-8

كنت أعني LANG وليس LC_LANG. المشكلة هي أنه إذا تراجعت إلى أي شيء آخر الآن، فقد فات الأوان. لقد جربت en_US.UTF_8 ولا شيء، تفشل إعادة البناء دائمًا.

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

الانتقال إلى خادم جديد يضمن أنك لن تتسبب في تعطل خادمك الحالي.

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

للأسف أنا بالفعل في حالة تعطل. لدي نسخ احتياطية ولكني لا أستطيع استعادتها لأن تغيير الإصدار كبير جدًا وهناك مشاكل في التبعيات مع الـ gem. لا يمكنني أيضًا العودة إلى الإصدار القديم لأن المشغل (launcher) يسحب التحديث تلقائيًا، وهو أمر محزن برأيي.

باستخدام LC_ALL أحصل على:

/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups.rb
/usr/local/bin/pups --stdin
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (fr_BE.UTF-8)
I, [2025-12-02T15:46:29.638999 #1]  INFO -- : Reading from stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/cli.rb:59:in `split’: invalid byte sequence in US-ASCII (ArgumentError)

    split = conf.split("_FILE_SEPERATOR_")
                       ^^^^^^^^^^^^^^^^^^
    from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/cli.rb:59:in `run'
    from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/bin/pups:9:in `<top (required)>'
    from /usr/local/bin/pups:25:in `load'
    from /usr/local/bin/pups:25:in `<main>'

bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
19a63b958021df0ecbc7e21bfea95f1c5ef7b039efd669b5d4af48b05d397a58

إذا قمت بإزالة LC_ALL، يتوقف الأمر ./launcher rebuild app عند:

Performing Consistency Checks

Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for user-defined encoding conversions              ok
Checking for user-defined postfix operators                 ok
Checking for incompatible polymorphic functions             ok
Checking for not-null constraint inconsistencies            ok
Creating dump of global objects                             ok
Creating dump of database schemas                           ok

lc_collate values for database “template1” do not match:  old “fr_BE.UTF-8”, new “en_US.UTF-8”

مع سطر دوكر (docker) “اليدوي” المذكور في المنشور العلوي، اضطررت أيضًا إلى ربط أشياء في /etc/postgresql بـ /var/... لأن بعض الملفات كانت مفقودة، وفي النهاية حصلت على نفس الخطأ المذكور أعلاه.

سأحاول تثبيتًا جديدًا والاستعادة هناك.

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

هل حاولت إعادة تسمية postgres_old إلى postgres_data و

./launcher start app

أوه. هذه فكرة جيدة! لهذا السبب يجب أن أقرأ المنشور بأكمله قبل الرد. :slight_smile:

يمكنني تأكيد أن التثبيت الجديد يتعطل أيضًا عند تعيين LC_ALL، بنفس الطريقة الموضحة أعلاه (_FILE_SEPERATOR_ …). ومع ذلك، بدونه يكون الأمر جيدًا.

تمكنت من استعادة الحفظ الخاص بي بتثبيت جديد ونظيف على أحدث إصدار رئيسي (master)، شكرًا لك. سيبقى إصلاح هذه المشكلات لغزًا…

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

عظيم!

لقد نقلت هذا إلى موضوع جديد. إذا كانت إحدى ردودي هي الحل، فيرجى وضع علامة عليها للسماح بإغلاقها تلقائيًا.

إعجابَين (2)