Ho appena modificato il nome utente di una persona xxx su loro richiesta. Volevano prendere un nome utente inattivo yyy. Quindi prima ho modificato il nome utente inattivo yyy in qualcos’altro come yyy1 e poi ho cambiato il nome utente di quella persona da xxx a yyy.
A questo punto, inizialmente, l’utente non poteva pubblicare nulla e ho visto il seguente errore nei log:
Eccezione del job: PG::UniqueViolation: ERRORE: valore di chiave duplicato viola il vincolo di unicità "index_users_on_username_lower" DETTAGLIO: La chiave (username_lower)=(mina) esiste già.
Ho provato a ripristinare il nome utente a quello precedente, ma ora tutta la loro cronologia è scomparsa. Cosa è andato storto esattamente?
Comunque, non so perché stia ricevendo un errore per questo utente (username_lower)=(mina) in assoluto. Non ho mai apportato alcuna modifica e sembra che si tratti di un utente inattivo. Tuttavia, osservo un comportamento strano anche nel loro profilo. Se apro la loro pagina delle notifiche, ricevo un errore 404.
Ok, ho seguito i passaggi. Se ho fatto qualcosa di diverso rispetto a te, fammelo sapere.
Ci sono due utenti:
xxx (account attivo)
yyy (account inattivo)
Cambia yyy in yyy1
Cambia xxx in yyy
( ha funzionato per me)
Prova a pubblicare usando il nuovo account yyy
( ha funzionato per me)
Cambia yyy di nuovo in xxx
( ha funzionato per me, senza perdita della cronologia utente)
Non ho avuto alcun problema durante l’intero processo. Una cosa da notare è che, dopo aver modificato il nome utente di un utente dalla pagina di amministrazione utenti, dovrai aggiornare la pagina prima che il pulsante “Mostra profilo pubblico” reindirizzi all’utente corretto.
Puoi controllare i tuoi /admin/logs/staff_action_logs per vedere se tutte le modifiche ai nomi utente registrate hanno senso? Cliccando sugli avatar dei nomi utente elencati dovresti essere portato alla loro pagina utente attuale e corretta.
Sì, cliccando sull’avatar vengo reindirizzato alla loro pagina. Tuttavia, mi sembra che la pagina sia piuttosto inattiva. Ad esempio, non riesco a visualizzare la loro email o a impersonare il loro account:
Secondo quanto osservo in questo rapporto, per prima cosa ho modificato fatemeh in fatemeh12. Poi ho cambiato fatemeh_baghdadi in fatemeh. Dopo un po’, l’utente mi ha detto che non riusciva a pubblicare nulla. Così ho pensato che forse c’era qualcosa che non andava nel processo di cambio nome utente e ho provato a cambiare il nome in qualcosa che non fosse stato ancora utilizzato. Quindi ho modificato fatemeh (precedentemente fatemeh_baghdadi) in fatemeh74. Poi ho notato che la sua cronologia era stata completamente cancellata e sono diventato nervoso. Ho quindi provato a ripristinare il nome utente originale, passando da fatemeh74 a fatemeh_baghdadi, e poi di nuovo da fatemeh_baghdadi a fatemeh_baghdadi5, ma nulla è migliorato. Ora ho due utenti diversi: fatemeh74 e fatemeh_baghdadi5, che teoricamente dovrebbero essere la stessa persona, ma in realtà sono due persone distinte; una delle due sembra non funzionare correttamente.
Sto facendo del mio meglio per seguire la discussione. Sembra una situazione molto strana!
Potresti chiarire cosa intendi quando dici che la loro cronologia è stata completamente cancellata? Dovrebbe fatemeh_baghdadi5 avere vari argomenti e risposte elencati nella sezione attività del suo profilo?
Se è così, quei post sono ora associati all’account fatemeh74? Dovrebbero esistere da qualche parte sul sito ed essere collegati a un utente specifico. Da un punto di vista di un utente anonimo, non riesco a trovare un utente con il nome utente fatemeh74 sul tuo sito.
C’è un’attività in background chiamata EnsureDbConsistency che viene eseguita ogni 12 ore. Potrebbe essere interessante attivarla manualmente da Sidekiq o aspettare e vedere se tutto viene risolto automaticamente nelle prossime 12 ore.
Se alla fine ti ritrovi con due account che dovrebbero essere uno, dovresti essere in grado di unirli. Tuttavia, ti consiglio vivamente di eseguire un backup prima di tentare l’operazione.
È davvero difficile capire cosa stia succedendo senza avere accesso diretto a tutto, ma speriamo di riuscire a risolvere il problema!
Nel momento in cui ho modificato il nome utente, ho visitato il loro profilo e non ho visto alcun post, ecc., ma il problema si è risolto dopo un po’. Tuttavia, ora fatemeh74, che sembra effettivamente essere la persona corretta, è piuttosto inattiva. Cioè, come vedi, non riusciamo a visualizzare la loro pagina del profilo, mentre i loro post e altre cose sono presenti. Come in questo caso:
In realtà non sono uno solo: ho controllato la loro email e il loro ID e sono completamente diversi. Tuttavia, seguendo i passaggi per la modifica dei nomi utente, dovrebbero essere identici e in realtà non dovrei avere due utenti qui.
Grazie per aver condiviso quell’esempio. È sicuramente preoccupante.
Puoi trovarlo elencato in /sidekiq/scheduler. Vale la pena provare, ma in base a quanto hai appena pubblicato, sembra che possa esserci un problema più profondo.
Si possono vedere due nomi utente distinti restituiti quando si cerca fatemeh12. Questo non dovrebbe essere possibile (non riesco a riprodurlo). Entrambi sembrano portare allo stesso profilo.
Non so più come procedere. Se entro circa questa ora domani nessuno interviene, cercherò di trovare qualcuno con nuove idee. Nel frattempo, se trovi altre informazioni che ritieni pertinenti, per favore pubblicale.
Finora ho capito questo: al primo tentativo, ho provato a cambiare fatemeh in fatemeh12 per rendere libero quel nome utente. Tuttavia, esisteva già un nome utente Fatemeh12, quindi in realtà non avrei dovuto poter cambiare fatemeh in fatemeh12. Eppure, in modo strano, mi ha permesso di farlo e da quel momento il database si è corrotto.
@tshenry hai trovato qualcosa? al momento l’utente fatemeh74, che era scomparso, in qualche modo è stato ripristinato. Non so esattamente come, però. Voglio assicurarmi che questo non accada in futuro, quindi devo sapere perché ho nomi utente identici con differenze tra maiuscole e minuscole e perché Discourse non previene una cosa del genere. Il mio Discourse è già aggiornato.
Ciao È fantastico sentirlo. Speravo che dopo un po’ di tempo un job in background potesse venire in soccorso. Sembra che sia proprio quello che è successo.
Non ho ancora avuto la possibilità di approfondire la questione. Siamo davvero limitati nel nostro supporto, dato che non abbiamo accesso al database del tuo sito e potremmo fare un’analisi approfondita solo per i nostri clienti ospitati sulla nostra piattaforma.
Questa è la prima volta che sentiamo parlare di un episodio del genere e non riesco a riprodurre il comportamento. Sospetto che si tratti di un caso limite specifico della tua istanza. Continueremo sicuramente a monitorare eventuali casi simili in futuro. Se vuoi essere particolarmente prudente, ti consiglio di verificare che non esista già un utente con lo stesso nome prima di apportare una modifica al nome utente.
Stiamo riscontrando lo stesso problema da molto tempo: naturalmente non è possibile riprodurre come il database sia arrivato a questo stato, ma di tanto in tanto finiamo per avere utenti che si rinominano autonomamente in nomi duplicati durante il periodo di grazia per il ridenominamento, ma ciò vale anche per i ridenominamenti effettuati dagli amministratori.
Non utilizziamo nomi utente Unicode, e questo è piuttosto… problematico a volte, poiché interrompe il processo di sincronizzazione del plugin Patreon, di cui ci affidiamo pesantemente per i servizi di policy esterni.