Aggiornamento su ARM (aarch64) con locale non predefinito
Ho appena trascorso del tempo a correggere un aggiornamento difettoso su un singolo server con una configurazione a due container.
- La sua CPU è ARM
- Discourse era configurato con il locale
en_UK.UTF-8
Passo dopo passo, ho capito che:
tianon/postgres-upgrade:13-to-15non funziona su ARM- La configurazione del locale è memorizzata in
share/${CONTAINER}/postgres_data/postgresql.conf
Ho iniziato commentando la parte env: del container dati, per assicurarmi che utilizzasse i locali predefiniti.
Quindi, per uscire dal pasticcio dell’aggiornamento, ho compiuto un passo pericoloso, assumendo che le differenze di collazione tra en_GB e en_US fossero trascurabili, e ho spietatamente aggiornato l’intero cluster a en_US:
UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';
Non sono sicuro che questo passaggio sia necessario, potrebbe variare (YMMV). Lo lascio qui per commenti da parte di persone più esperte, e non lo consiglio affatto per lingue diverse!
Poi ho sostituito il locale in postgresql.conf:
sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE
![]()
Non pensare che sia stato facile: non sto menzionando il lungo percorso di esplorazione delle opzioni, specialmente perché quando sono intervenuto, l’interfaccia di amministrazione non era disponibile e l’ultimo backup era stato effettuato 6 giorni fa. Ho dovuto armeggiare prima di poter arrivare a una risoluzione adeguata - o almeno funzionante.
Spero che questo possa far risparmiare tempo ad alcune persone.