Nach dem Update ließ sich die Seite nicht öffnen und die Backup-Datenbank nicht laden

Ich habe die Website aktualisiert, dann traten Nginx-Fehler auf. Ich konnte die Website nicht erreichen. Egal, was ich tat, es funktionierte nicht. Also habe ich eine Neuinstallation vorgenommen und versucht, das gestrige Essen hinzuzufügen. Das ist mir jedoch auch nicht gelungen. Ich erhalte beim Installieren des Backups folgenden Fehler:

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/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.

beim Aktualisieren von app.yml, das zum Erstellen der pgembeddings-Codes verwendet wurde

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

Ich habe mir das mit @kuaza angesehen, wegen seiner Erfahrung mit meinem Plugin.

Wir haben den fehlerhaften Index aus dump.sql entfernt, der den oben genannten Fehler verursacht hat, und ihn wiederhergestellt.

Es gab ein aktualisiertes Skript, um diesen Index zu löschen, aber einige Benutzer des Plugins haben die Aktualisierung möglicherweise nicht gesehen.

Wir haben jetzt einen Aufbau, aber keine Verbindung vom Browser.

Wir haben den Container wieder hochgefahren, ohne den fehlerhaften Index, und das gesamte alte Skript in app.yml zum Erstellen von pgembedding wurde entfernt, sodass es sauber ist, aber mit Plugins.

Der Container ist hochgefahren – Sie können ihn problemlos betreten.

psql ist anscheinend hochgefahren – Sie können die Datenbankaufforderung innerhalb des Containers problemlos aufrufen.

Innerhalb des Containers können Sie rails c ohne Probleme öffnen.

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

zeigt keine offensichtlichen Fehlermeldungen.

Ich bin derzeit ratlos.

Haben Sie Ideen für weitere Dinge, die ich überprüfen könnte?

1 „Gefällt mir“

Ich habe eine Prüfung verpasst …

… indem ich in den Container gegangen bin und Folgendes getan habe:

curl 0.0.0.0:3000

Das werde ich als Nächstes versuchen …

2 „Gefällt mir“

Wenn Sie dies tun, erscheinen die Codes der HTML-Einrichtungsseite. Ich glaube, das Problem wird durch DNS verursacht. Und dieser Unsinn macht mich fertig.

Als ich dies ausführte, schien es zu funktionieren, aber tatsächlich war das Problem, dass der Webserver nicht funktionierte und wir es auf diese Weise nicht verstehen können. Wenn wir den Container betreten und diesen Code ausführen, können wir sehen, ob nginx läuft oder nicht:

nginx -t

Ich möchte jedoch die Frage in diesem Thema beantworten, indem ich die Lösung aus Ihrer Nachricht kopiere. Das nginx-Problem ist völlig anders, ich teste es auf einer separaten Domain mit einer frischen Installation. Wenn es wieder einen Fehler gibt, werde ich ein separates Problem eröffnen und es melden.

Das Problem, dass das Backup im Thema nicht funktioniert, wird durch eine nicht mehr verwendete Tabelle oder einen nicht mehr verwendeten Datensatz verursacht. Ich glaube, es war ein Datensatz, den das Chatbot-Plugin nicht mehr verwendet, der aber beim Update nicht gelöscht wurde. Ich glaube, der Plugin-Autor hat das gelöst, Sie können beruhigt sein :slight_smile: Ich habe die Fehlerzeile gelöscht, neu verpackt und über das Admin-Panel installiert, es funktioniert ohne Probleme. Oder Sie können es auch vom Server herunterladen:

Erklärung zur Behebung einer beschädigten Plugin-Datei:

  • Ein Backup entpacken: tar -xvzf foo.tar.gz
  • Die Datei dump.sql entpacken
  • Die störenden Zeilen entfernen, die den unerwünschten Index erstellen:
--
-- TOC entry 8020 (class 1259 OID 84313)
-- Name: hnsw_index_on_chatbot_post_embeddings; Type: INDEX; Schema: public; Owner: -
--

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');
  • Die Datei dump.sql wieder komprimieren
  • Sie in einem Verzeichnis mit Ihrem Uploads-Ordner zusammenführen
  • Das Ganze wieder komprimieren
  • Diese Datei manuell wiederherstellen

Wenn Sie den Fehler einer anderen Tabelle erhalten, denke ich, dass er behoben wird, wenn Sie die Tabelle, die diesen Datensatz enthält, mit der obigen Methode löschen.

Meine Website, an der ich hart gearbeitet habe und die zu wachsen begann, war zwei Tage lang nicht erreichbar. Vergessen wir nicht eine schlaflose Nacht und einen Tag. Es besteht immer die Möglichkeit, dass solche Ereignisse uns passieren. Vergessen Sie nicht, ein Backup zu erstellen und zu überprüfen, ob das Backup funktioniert. Ich möchte meinem Bruder @merefield danken, der mir während dieses Prozesses geholfen hat. Wir haben gemeinsam neue Dinge gelernt.

3 „Gefällt mir“

Diese Methode hat bei mir funktioniert, als ich denselben Fehler hatte. Vielen Dank für die Veröffentlichung.

1 „Gefällt mir“

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