Problemi con l'aggiornamento a postgres 15

Ciao,
Ho avviato un aggiornamento dopo forse un anno, il che ha portato al passaggio da pg 13 a 15.

Sto provando ad eseguire il comando dato con il mio LC_LANG ma non funziona, ottengo FATAL: data directory “/shared/postgres_data” does not exist. E in effetti non esiste… Qualcuno ha un’idea?

Dovrebbe esserci un /shared/postgres_old.

Modificare la propria LC_LANG è probabilmente una cattiva idea.

Ho riscontrato lo stesso errore tuo, “/bin/bash: warning: setlocale: LC_ALL: cannot change locale”, quando ho provato il mio launch rebuild app, il che mi ha portato a questo post. Sei riuscito a risolverlo alla fine? I comandi docker run mi hanno solo causato ulteriori problemi, come indicato sopra.

Ho aggiunto una mappatura \-v /var/discourse/shared/standalone:/shared e ora ho fatto un po’ di strada. È strano che non ci sia comunque. Il problema potrebbe essere che la mia “app” è ancora bloccata a una versione da qualche parte nel 2024 e la “ricostruzione” non funziona. Solo un’ipotesi…

Quindi avevo questo nel mio app.yml e funzionava bene:

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

Intendevo LANG e non LC_LANG. Il problema è che se torno a qualsiasi altra cosa ora è “troppo tardi”. Ho provato en_US.UTF_8 e niente, la ricostruzione fallisce sempre.

Se non hai un backup corrente e non riesci a riavviare il tuo vecchio container, allora passerei al template PG13 e otterrei una configurazione funzionante, poi farei un backup, quindi imposterei un nuovo server e ripristinerei il backup lì. Puoi configurarlo con qualsiasi linguaggio tu voglia quando è un database vuoto e poi eseguire il ripristino (e forse il linguaggio verrà convertito magicamente?).

Il passaggio a un nuovo server assicura che non si blocchi il server esistente.

Purtroppo sono già in uno stato di crash. Ho dei backup ma non posso ripristinarli poiché il cambio di versione è troppo grande e ci sono problemi di dipendenze con le gem. Non posso nemmeno tornare alla vecchia versione poiché il launcher la scarica automaticamente, un po’ triste secondo me.

Con LC_ALL ottengo:

/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

Se rimuovo LC_ALL, allora “./launcher rebuild app” si ferma a:

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”

Con la riga docker “manuale” menzionata nel post iniziale, ho anche dovuto collegare le cose in /etc/postgresql a /var/… poiché alcuni file mancavano e alla fine ho ottenuto lo stesso errore di cui sopra.

Proverò una nuova installazione e ripristinerò lì.

Dubito che sia vero che il cambio di versione sia troppo grande. Hai configurato un nuovo server e provato a ripristinare quel backup? Ho ripristinato un backup di diversi anni più vecchio del sito su cui è stato ripristinato. Sono abbastanza sicuro che funzionerà. Sposto siti su nuovi server diverse volte al mese. L’unica volta che ci sono stati problemi è quando c’era un indice corrotto, cosa che non vedo da parecchio tempo.

Hai provato a rinominare postgres_old in postgres_data e

./launcher start app

Oh. Questa è una buona idea! Ecco perché dovrei leggere l’intero post prima di rispondere. :slight_smile:

Confermo che anche una nuova installazione si interrompe con LC_ALL impostato, nello stesso modo mostrato sopra (\FILE_SEPERATOR\ …). Tuttavia, senza LC_ALL funziona correttamente.

Sono riuscito a ripristinare il mio salvataggio con una nuova installazione pulita sull’ultimo master, grazie. Risolvere questi problemi rimarrà un mistero…

Ottimo!

Ho spostato questo in un nuovo argomento. Se una delle mie risposte è stata la soluzione, per favore contrassegnala come tale per consentire la chiusura automatica.