Dopo l'aggiornamento, il sito non si è aperto e il backup del database non è stato caricato

Ho aggiornato il sito, poi ha iniziato a dare errori nginx. Non riuscivo a raggiungere il sito. Non importava cosa facessi, non funzionava. Quindi ho fatto una nuova installazione e ho provato ad aggiungere il cibo di ieri. Tuttavia, non ci sono riuscito nemmeno in questo. Ricevo il seguente errore durante l’installazione del backup:

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.

quando si aggiorna app.yml utilizzato per costruire i codici 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

Ho dato un’occhiata a questo con @kuaza a causa della sua esperienza con il mio plugin.

Abbiamo rimosso l’indice problematico da dump.sql che causava l’errore sopra e lo abbiamo ripristinato.

C’era uno script aggiornato per eliminare questo indice, ma alcuni utenti del plugin potrebbero non aver visto l’aggiornamento.

Ora abbiamo un accumulo ma non c’è connessione dal browser.

Abbiamo nuovamente il container attivo senza l’indice problematico e tutto il vecchio script in app.yml per creare pgembedding è stato rimosso, quindi è pulito ma con i plugin.

il container è attivo - puoi accedervi senza problemi.

psql apparentemente attivo - puoi avviare il prompt del database all’interno del container senza problemi.

all’interno del container puoi aprire rails c senza problemi.

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

non mostra messaggi di errore evidenti.

Attualmente sono bloccato.

Qualche idea su altre cose da controllare?

1 Mi Piace

Ho perso un controllo…

entrando nel container e facendo questo:

curl 0.0.0.0:3000

Ci proverò adesso…

2 Mi Piace

Quando fai questo, compaiono i codici della pagina di configurazione html. Penso che il problema sia causato dal DNS. E questa assurdità mi sta distruggendo.

Quando ho eseguito questo, sembrava funzionare, ma in realtà il problema era che il webserver non funzionava e non possiamo capirlo in questo modo. Quando entriamo nel container ed eseguiamo questo codice, possiamo vedere se nginx è in esecuzione o meno:

nginx -t

Tuttavia, vorrei rispondere al problema in questo argomento copiando la soluzione dal tuo messaggio. Il problema di nginx è completamente diverso, lo sto testando su un dominio separato con un’installazione pulita. Se dovesse ripresentarsi un errore, aprirò un problema separato e lo segnalerò.

Il problema del backup che non funziona nell’argomento è causato da una tabella o un record non più utilizzato. Penso che fosse un record che il plugin chatbot non utilizza più, ma questo non è stato eliminato durante l’aggiornamento. Penso che l’amico autore del plugin abbia risolto questo problema, puoi stare tranquillo :slight_smile: Ho eliminato la riga di errore, l’ho impacchettata nuovamente e l’ho installata dal pannello di amministrazione, funziona senza problemi. Oppure puoi anche scaricarlo dal server:

Spiegazione di come correggere il file del plugin corrotto:

  • Decomprimi un backup: tar -xvzf foo.tar.gz
  • Decomprimi il file dump.sql
  • rimuovi le righe incriminate che creano l’indice indesiderato:
--
-- 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');
  • comprimi nuovamente il file dump.sql
  • combinalo in una directory con la tua cartella di upload
  • comprimi nuovamente tutto in un file tar.gz
  • ripristina manualmente questo file

Se ti dà l’errore di una tabella diversa, penso che verrà risolto se elimini la tabella che contiene quel record utilizzando il metodo sopra.

Il mio sito, su cui ho lavorato duramente e che stava iniziando a crescere, è stato offline per due giorni. Non dimentichiamo una notte e un giorno insonni. C’è sempre la possibilità che eventi del genere ci accadano. Non dimenticare di fare un backup e di verificare che il backup funzioni. Vorrei ringraziare mio fratello @merefield per avermi aiutato durante questo processo. Abbiamo imparato cose nuove insieme.

3 Mi Piace

Questo metodo ha funzionato per me quando stavo riscontrando lo stesso errore. Grazie per averlo pubblicato.

1 Mi Piace

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