Es gibt aufgrund einer Datenbankkorruption einige doppelte Tags, die ich nicht zusammenführen kann

Wie auf dem Bild zu sehen ist, gibt es in unserem Forum einige Tags, die genau gleich sind!

Beim Erstellen eines Themas sehen Sie bei diesen Tags unterschiedliche Anzahl von Themen:

Wenn Sie jedoch einen auswählen, werden beide ausgewählt. Wenn Sie dann auf die Tags klicken, führen beide zur selben Seite mit ähnlichen Themen und Themenzahlen. Daher können Administratoren sie nicht zusammenführen oder eines davon löschen.

Dieses ist ein Beispielthema in unserem Forum mit zwei Sätzen doppelter Tags.

Ich hatte ein ähnliches Problem, das auf einen beschädigten Index zurückzuführen war.

Ich weiß nicht, ob dies hilft: Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes)

@neil Hast du hier eine Idee? Ist das eine Nebenwirkung von Synonymen?

Unwahrscheinlich. Wir haben bereits viele Fälle gesehen, in denen beschädigte Indizes oder fehlerhafte Plugins von Drittanbietern dies verursacht haben.

Das klingt nach demselben Thema:

Da auf der Spalte für Tag-Namen ein eindeutiger Index existiert, sollten doppelte Tags eigentlich nicht möglich sein. Ich vermute, dass ein Befehl wie reindex table tags fehlschlagen würde.

Der von @pfaffman beschriebene Prozess hier ist wahrscheinlich das, was du tun musst, um doppelte Tags zu entfernen und die Indizes zu reparieren.

Das ist die Liste der Plugins, die wir haben. Ich vermute, keines davon hat etwas mit Tags zu tun:

Ich habe sie bereits manuell entfernt! Oder besser gesagt, ich konnte jeweils eines der doppelten Tags pro Paar löschen; danach wurde die Seite für das andere Tag in dem Paar unzugänglich (selbst für Administratoren)! Wenn wir zur Seite gehen, erscheint die Meldung: „Diese Seite existiert nicht oder ist privat“, obwohl es mehrere Themen mit diesem Tag gibt.

Ein Beispiel wäre das Tag یادگیری, das 488 Themen enthalten sollte, während die Tag-Seite nicht existiert (Link zu der Tag-Seite):

image

P.S.: Entschuldigung, dass die Seiten und Tags nicht auf Englisch sind. Ich hoffe, das gibt einen Hinweis.

Es klingt so, als hättest du es über die Benutzeroberfläche versucht, aber das ist auf diese Weise nicht möglich. Wie Jay es gemacht hat, musst du alle Themen, die eines der Tags verwenden, auf das andere umstellen, wie in seinem Beispiel:

TopicTag.where(tag_id: 717).update_all(tag_id: 611)

Danke, gibt es einen Befehl, um die beschädigten Tags (die ich bereits über die Benutzeroberfläche geändert habe) sowie die doppelten Tags zu finden? Falls ja, könntest du mich dabei unterstützen?

Ich habe beschrieben, wie ich es gemacht habe (oder etwas Ähnliches), unter Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes) - #14 by pfaffman. Es ist weit entfernt von einer Schritt-für-Schritt-Anleitung, könnte aber helfen. Man muss zwischen der Rails-Konsole und psql hin und her wechseln, was verwirrend oder einschüchternd sein kann, wenn man mit beiden nicht vertraut ist. Falls es nicht klappt und du ein Budget hast: Ich habe es kürzlich selbst gemacht. :wink:

Ich glaube nicht, dass die Indexkorruption durch ein Plugin verursacht wird. Ich habe in den letzten Monaten bereits fünf Mal eine solche PSQL-Indexkorruption gesehen, und bei vier davon wurden Farsi-Spracheinstellungen verwendet.

Ich denke auch, dass dies ein bug ist, und das Schlimme daran ist, dass er andauert! Egal, dass ich vorherige Duplikate gelöscht habe, ich bekomme immer wieder neue. Wenn es hilft, kann ich die nicht-offiziellen Plugins entfernen und das Entstehen neuer Duplikate überprüfen.

Wenn es am Farsi läge, würde ich vermuten, dass es an einigen scheinbar ähnlichen, aber grundsätzlich verschiedenen Alphabeten liegt, die verschiedene Tastaturen verwenden. Beispielsweise verwenden einige Geräte das arabische Alphabet und andere das persische. In diesen Tastaturen gibt es ي und ی, die in einem Wort nicht zu unterscheiden sind (aber in der Kodierung unterschiedlich sind).

Aber @Pfaffmans Fall betraf englische Indizes, nicht persische!

Ja, das ist der einzige mir bekannte, der nicht auf Farsi ist.