Ieri sera ho avuto un grosso problema su un forum e ho dovuto ricreare tutto. Ma durante il ripristino ho riscontrato un errore e l’operazione è fallita. Ecco l’errore:
ERROR: could not create unique index "index_users_on_username_lower"
DETAIL: Key (username_lower)=(lea) is duplicated.
EXCEPTION: psql failed: DETAIL: Key (username_lower)=(lea) is duplicated.
Penso che possa essere collegato al login tramite Twitter, ma il ripristino può modificare un nome username_lower se è duplicato? Non credo di poterlo modificare nel file SQL (è piuttosto grande) e ricaricarlo.
Era un problema diverso: il server non riusciva ad accedere a pups.git. Impossibile risolvere l’host: github.com. Ho provato alcune soluzioni trovate ieri sera, ma non hanno funzionato.
Con il ripristino, penso che il problema riguardi solo un nome utente (forse legato alla creazione dell’account con un clic tramite Twitter o qualcosa di simile). Sto cercando di risolverlo manualmente, ma gestire un file SQL da 1 GB non è l’ideale.
Modifica: con il software vim, sono riuscito a modificare il file SQL e ho trovato le righe corrette. Il ripristino ha funzionato. Devo solo rifare tutto da capo e dovrebbe essere pronto.
C’era un utente chiamato “Lea” e uno chiamato “lea”. È strano che Discourse abbia permesso che accadesse. È un forum piuttosto vecchio (giugno 2014) e l’ho aggiornato frequentemente, quindi potrebbe essere stato dovuto a una versione specifica.
Sono proprio pessimo con SQL. Per trovare la tabella giusta, ho cercato username_lower,. Mi ha indirizzato alla tabella degli utenti, poi ho cercato “lea”. Ho modificato le due voci relative a Lea. Probabilmente sarebbe stato molto più semplice, ma ricordate: sono un disastro con SQL, specialmente quando i file sono grandi 1,5 GB. Salva il file.
Comprimi il dump.sql con 7zip. Dovresti ottenere un nuovo file chiamato: dump.sql.gz
Crea una nuova cartella in /var/discourse/shared/standalone/backups/default/. Io ho usato test
Se hai una buona connessione internet, carica la cartella uploads che hai ottenuto decomprimendo il file di backup e mettila in /var/discourse/shared/standalone/backups/default/test/
6.1 Se non hai una buona connessione come me, devi usare il tuo server. Prendi nota del nome del tuo file di backup e usa questo comando: tar xvzf /var/discourse/shared/standalone/backups/default/yourbackupfile.tar.gz -C /var/discourse/shared/standalone/backups/default/test
6.2 Nella cartella test avrai un file dump.sql.gz e una cartella uploads. Perfetto.
Carica il file dump.sql.gz dalla tua cartella test per sostituire il dump.sql.gz rotto
Sul tuo server : vai in cd /var/discourse/shared/standalone/backups/default/test
Devi ricreare il file di backup. Devi usare il nome esatto del vecchio file di backup: tar -czvf yourbackupfile.tar.gz uploads/ dump.sql.gz
Tramite il tuo FTP vai in /var/discourse/shared/standalone/backups/default/, elimina il backup rotto o spostalo in un’altra cartella
Sposta il nuovo file di backup in /var/discourse/shared/standalone/backups/default/
Ripristina il backup. Preferisco questo metodo e, se sei arrivato fin qui, dovresti essere in grado di usarlo facilmente: Restore a backup from the command line