بعد التحديث، لم يفتح الموقع ولم يتم تحميل قاعدة البيانات الاحتياطية

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

error complete:

CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ERROR:  unrecognized parameter "dims"
EXCEPTION: psql failed: ERROR:  unrecognized parameter "dims"
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:451:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor.rb:527:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:28:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.5.3/exe/bundle:20:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
Rolling back...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2024-02-18-120937' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

عند تحديث app.yml الذي يُستخدم لبناء أكواد pgembeddings

hooks:
  after_code:
    - exec:
        cd: $home
        cmd:
          - sudo apt-get install wget ca-certificates
    - exec:
        cd: $home
        cmd:
          - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    - exec:
        cd: $home
        cmd:
          - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
    - exec:
        cd: $home
        cmd:
          - apt-get update
    - exec:
        cd: $home
        cmd:
          - apt-get -y install -y postgresql-server-dev-${PG_MAJOR}
    - exec:
        cd: $home/tmp
        cmd:
          - git clone https://github.com/neondatabase/pg_embedding.git
    - exec:
        cd: $home/tmp/pg_embedding
        cmd:
          - make PG_CONFIG=/usr/lib/postgresql/13/bin/pg_config
    - exec:
        cd: $home/tmp/pg_embedding
        cmd:
          - make PG_CONFIG=/usr/lib/postgresql/13/bin/pg_config install
    - exec:
        cd: $home
        cmd:
          - su postgres -c 'psql discourse -c "create extension if not exists embedding;"'
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-question-answer.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-restricted-replies.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-follow.git
          - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-no-bump.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/spirobel/discourse-matheditor.git
          - git clone https://github.com/discourse/discourse-google-one-tap.git
          - git clone https://github.com/merefield/discourse-chatbot.git
          - git clone https://github.com/discourse/discourse-ai.git
#          - git clone https://github.com/paviliondev/discourse-custom-wizard.git
          - git clone https://github.com/discourse/discourse-reactions.git
#          - git clone https://github.com/discourse/discourse-subscriptions.git

لقد نظرت في هذا مع @kuaza بسبب خبرته مع المكون الإضافي الخاص بي.

لقد أزلنا الفهرس المسيء من dump.sql الذي كان يسبب الخطأ أعلاه وأعدناه.

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

لدينا الآن تراكم ولكن لا يوجد اتصال من المتصفح.

لقد قمنا بتشغيل الحاوية مرة أخرى بدون الفهرس المسيء وتمت إزالة كل النص البرمجي القديم في app.yml لبناء pgembedding، لذا فهي نظيفة ولكن مع المكونات الإضافية.

الحاوية قيد التشغيل - يمكنك الدخول إليها بسهولة.

psql يعمل على ما يبدو - يمكنك تشغيل موجه قاعدة البيانات داخل الحاوية بسهولة.

داخل الحاوية يمكنك فتح rails c بدون مشكلة.

/var/discourse/shared/standalone/log/rails# tail -n 200 production.log

لا يظهر أي رسائل خطأ واضحة.

أنا حاليًا في حيرة.

هل لديك أي أفكار لأشياء أخرى للتحقق منها؟

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

فاتني فحص واحد…

الدخول إلى الحاوية وتنفيذ هذا:

curl 0.0.0.0:3000

سأجرب ذلك تالياً…

إعجابَين (2)

عندما تفعل ذلك، تظهر رموز صفحة إعداد HTML. أعتقد أن المشكلة سببها نظام أسماء النطاقات (DNS). وهذا الهراء يدمرني.

عندما قمت بتشغيل هذا، بدا أنه يعمل، ولكن في الواقع كانت المشكلة أن خادم الويب لم يكن يعمل ولا يمكننا فهمه بهذه الطريقة. عندما ندخل إلى الحاوية ونقوم بتشغيل هذا الرمز، يمكننا رؤية ما إذا كان nginx يعمل أم لا:

nginx -t

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

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

شرح إصلاح ملف المكون الإضافي التالف في هو:

  • فك ضغط النسخة الاحتياطية: tar -xvzf foo.tar.gz
  • فك ضغط ملف dump.sql
  • إزالة الأسطر المسيئة التي تبني الفهرس غير المرغوب فيه:
--
-- إدخال TOC 8020 (الفئة 1259 OID 84313)
-- الاسم: hnsw_index_on_chatbot_post_embeddings؛ النوع: INDEX؛ المخطط: public؛ المالك: -
--

CREATE INDEX hnsw_index_on_chatbot_post_embeddings ON public.chatbot_post_embeddings_old USING hnsw (embedding) WITH (dims='1536', m='64', efconstruction='64', efsearch='64');
  • ضغط ملف dump.sql مرة أخرى
  • دمجه في دليل مع مجلد التحميلات الخاص بك
  • ضغط كل شيء مرة أخرى
  • استعادة هذا الملف يدويًا

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

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

3 إعجابات

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

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.