Upgrade-Problem mit doppeltem Benutzernamen in der DB

Also, ich habe heute Morgen versucht, mein Board zu aktualisieren, und habe einen Fehler erhalten:

PG::UniqueViolation: ERROR: duplicate key value violates unique constraint “index_users_on_username”

Es wird ein Benutzer namens „MikeC

1 „Gefällt mir“

Nun, so habe ich es gelöst, aber ich bin mir sicher, dass es einen besseren Weg gibt:

Ich bin in meinen Admin-Bereich gegangen und habe nach ‘MikeC’ gesucht, was 2 Benutzer zurückgegeben hat. Also habe ich den ältesten umbenannt und anstatt den Rebuild erneut auszuführen, habe ich mich einfach in die Datenbank eingeloggt und neu indiziert:

cd /var/discourse
./launcher enter app
sudo -i postgres psql discourse
discourse# REINDEX SCHEMA CONCURRENTLY public;

Das würde auf einen weiteren Duplikatfall hindeuten, und ich würde zur WebUI zurückkehren, nach diesem Benutzer suchen und den älteren Benutzer umbenennen. Waschen, spülen, wiederholen, bis keine Duplikate mehr gefunden werden. Dann den Rebuild ausführen und Erfolg!

Ich würde jedoch gerne wissen:

  1. Warum erlaubt Discourse Duplikate? Der Benutzername kann case-insensitive sein, aber username_lower normalisiert zu einem Wert, der eindeutig sein sollte. Das scheint ein ziemlich großer Fehler zu sein.

  2. Was ist ein besserer Weg, um diese Duplikate zu finden und zu beheben?

2 „Gefällt mir“

Ich glaube nicht, dass es einen besseren Weg gibt. Doppelte Benutzernamen sind nicht erlaubt, aber es scheint, als habe ein vorheriger Fehler die Umwandlung in Kleinbuchstaben nicht durchgesetzt. Es gab dazu kürzlich ein weiteres Thema.

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.