Problemi di accesso al database dopo l'aggiornamento v3.5.2 -\u003e v3.6.0.beta2

  • v3.5.2 → v3.5.2
  • v3.6.0.beta2 → v3.6.0.beta2

Questo thread mi ha portato a questo punto: Upgrade failed. Database stopped. (multisite install)

Ora ho problemi di accesso al database:


2025-11-02 17:13:51.212 UTC [1975] postgres@c_discourse LOG:  il nome utente fornito (postgres) e il nome utente autenticato (discourse) non corrispondono 
2025-11-02 17:13:51.212 UTC [1975] postgres@c_discourse FATAL:  l'autenticazione Peer non è riuscita per l'utente "postgres" 
2025-11-02 17:13:51.212 UTC [1975] postgres@c_discourse DETAIL:  La connessione corrisponde alla riga 89 di pg_hba.conf: "local   all             postgres       
                        peer"
postgres=# \l
List of databases
Name     |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges
-------------±---------±---------±----------------±------------±------------±-----------±----------±----------------------
b_discourse | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =Tc/postgres          +
|          |          |                 |             |             |            |           | postgres=CTc/postgres +
|          |          |                 |             |             |            |           | discourse=CTc/postgres
c_discourse | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =Tc/postgres          +
|          |          |                 |             |             |            |           | postgres=CTc/postgres +
|          |          |                 |             |             |            |           | discourse=CTc/postgres
discourse   | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =Tc/postgres          +
|          |          |                 |             |             |            |           | postgres=CTc/postgres +
|          |          |                 |             |             |            |           | discourse=CTc/postgres
postgres    | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           |
template0   | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =c/postgres           +
|          |          |                 |             |             |            |           | postgres=CTc/postgres
template1   | postgres | UTF8     | libc            | en_US.UTF-8 | en_US.UTF-8 |            |           | =c/postgres           +
|          |          |                 |             |             |            |           | postgres=CTc/postgres
(6 rows)


Il multisite.yaml è cambiato tra queste versioni.

Originale:
secondsite:
adapter: postgresql
database: b_discourse
pool: 25
timeout: 5000
db_id: 2
host_names:
- ``forum.domain.com

Nuovo:
mlp:
adapter: postgresql
database: discourse_mlp
username: discourse_mlp
password: applejack
host: dbhost
pool: 5
timeout: 5000
host_names:
- discourse.nudderdomain.com
- discourse.nudderdomain.internal

Non ho mai impostato password o utenti per il multisite perché non erano richiesti o elencati nel modello originale quando li ho configurati.

Inizialmente non sono riuscito ad aggiornare perché il multisite è fallito a causa dei permessi sui due siti elencati in multisite.yml. Aggiungere postgres come utente a multisite.yml non ha funzionato per la migrazione. Ora vedo che forse avrei dovuto provare discourse?

Cambiare semplicemente il proprietario in discourse lo risolverà? Devo aggiungere utenti e password per il multisite per farlo corrispondere a quello attuale?

Qual è la migliore SOLUZIONE A LUNGO TERMINE qui.

Il tuo post è molto difficile da leggere, quindi l’ho rimosso dall’elenco. Correggi la formattazione e potrò rimetterlo nell’elenco.

2 Mi Piace

Purtroppo mi sono impegnato al massimo per renderlo il più comprensibile/coerente possibile.

So cosa intendo. :wink:

MODIFICA: OK, ho capito. L’altro forum che uso è un po’ diverso. Uso i tripli apici sulla riga prima e dopo il blocco. Ora capisco cosa sta succedendo. Questo, il primo set di apici inserisce una finestra in cui incollare. Non riuscivo a capire perché i tripli apici non funzionassero e </> non mi desse quello che volevo veramente.

1 Mi Piace

È possibile passare all’editor markdown se è necessario eseguire molte operazioni markdown nel tuo post.

I problemi con la password del tuo database sono strani. Hai considerato di spostarti su un nuovo server? Potrebbe essere più rapido e semplice che combattere con questo problema.

Hai seguito queste istruzioni? (Non sembra così?)

È una buona scommessa, ma assicurati di avere cose come nell’argomento di installazione multisite.

Se i tuoi siti funzionano ora, allora incoraggio anche io a fare un’installazione multisite pulita ed eseguire il backup/ripristino dei database. Puoi copiare tutto il resto come descritto in Sposta un sito Discourse su un altro VPS con rsync

Mi chiedevo perché avessi chiamato i miei database b_discourse e c_discourse. Ora so perché. :wink:

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_postgres:
     - exec: sudo -u postgres createdb b_discourse || exit 0
     - exec:
          stdin: |
            grant all privileges on database b_discourse to discourse;
          cmd: sudo -u postgres psql b_discourse
          raise_on_fail: false

     - exec: sudo -u postgres createdb c_discourse || exit 0
     - exec:
          stdin: |
            grant all privileges on database c_discourse to discourse;
          cmd: sudo -u postgres psql c_discourse
          raise_on_fail: false

     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<EOF
            alter schema public owner to discourse;
            EOF'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<EOF
            create extension if not exists hstore;
            EOF'
     - exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<EOF
            create extension if not exists pg_trgm;
            EOF

Non capisco appieno come vengono concesse le autorizzazioni, quindi mi chiedevo riguardo a queste. (screenshot da sopra per due database problematici):

Bene, buone e cattive notizie. :frowning:
Ora vogliamo :frowning:

2025-11-07 18:05:41.555 UTC [4724] discourse@b_discourse ERROR:  must be owner of extension vector
2025-11-07 18:05:41.555 UTC [4724] discourse@b_discourse STATEMENT:  ALTER EXTENSION vector UPDATE TO '0.8.0';
2025-11-07 18:05:41.752 UTC [4725] discourse@c_discourse ERROR:  must be owner of extension vector
2025-11-07 18:05:41.752 UTC [4725] discourse@c_discourse STATEMENT:  ALTER EXTENSION vector UPDATE TO '0.8.0';

invece di

ALTER EXTENSION vector UPDATE TO ‘0.7.0’;

Ma:

b_discourse=# ALTER EXTENSION vector UPDATE TO '0.8.0';
ERROR:  extension "vector" has no update path from version "0.7.4" to version "0.8.0"

Sono stato cauto riguardo al semplice cambio di proprietari sui database, ma immagino che potrebbe essere il prossimo passo.

C’è un modo per far connettere ./launcher come utente postgres? Sembra che risolverebbe tutti i miei problemi di aggiornamento qui.

b_discourse=# select e.extname, u.usename 
             from pg_extension e 
             join pg_user u on e.extowner = u.usesysid;
 extname  |  usename  
----------+-----------
 plpgsql  | postgres
 hstore   | postgres
 pg_trgm  | postgres
 unaccent | discourse
 vector   | postgres
(5 rows)

Sembra che ci siano “problemi” solo nel tentativo di cambiare il proprietario dell’estensione. Il primo riferimento che ho trovato è del 2017 e nel 2022 non è ancora stato implementato.

Ho usato apt per installare la nuova estensione e ha funzionato. Accidenti. Ora farò dei backup corretti e aggiornerò a Postgres 15. Ma non stasera. :wink:

La mia cronologia sembra essere stata cancellata, quindi non posso dirti esattamente come l’ho fatto, ma fai attenzione. Richiede postgres 13 e tenterà di reinstallarlo.

PS: A quanto pare avevo attivato i backup automatici ma me ne ero dimenticato. Non che sapessi dove fossero. Imposterò un processo rsync per metterli nella directory in cui faccio anche gli altri backup del server.

2 Mi Piace