Wie kann ich ein Tag in der Entwicklung-Datenbank (lokal) löschen?

Fortsetzung der Diskussion aus Manuelles Wiederherstellen einer Discourse-Sicherung für die Entwicklung:

Auf meinem lokalen Rechner möchte ich vor der Wiederherstellung ein Tag in der Sicherungsdatenbank löschen. Wie kann ich das über die Konsole tun?

1 „Gefällt mir“

Um ein Tag aus der Rails-Konsole zu löschen, versuche folgendes:

t = Tag.find_by_name('<dein_tag_name>')
t.destroy!

Der Aufruf von destroy! anstelle von delete im letzten Befehl sorgt dafür, dass alle auf der Website vorhandenen Datensätze, die mit dem entfernten Tag verknüpft sind, ebenfalls bereinigt werden.

3 „Gefällt mir“

Vielen Dank für deine Hilfe :blush:

Ist es möglich, ein Tag aus einer Datenbank zu löschen, die noch nicht läuft? Also aus einem Backup, das nicht wiederhergestellt werden kann (wegen des Problems mit duplizierten Tags)?

Ich hoffe, die Frage ist klar.

Wenn ich das selbst machen würde, würde ich zunächst zur Seite zurückkehren, auf der die Backup-Datei erstellt wurde, das Tag über die Rails-Konsole löschen und dann eine neue Backup-Datei erstellen.

Wenn das nicht möglich ist oder das Problem mit den doppelten Tags nicht löst, könntest du den Eintrag aus der Tabelle löschen, indem du ein psql-Terminal dafür öffnest. Etwas wie:

DELETE FROM tags WHERE name = <dein_tag_name>;

Meine Sorge dabei ist, dass dies die Verwendungen des gelöschten Tags in der Datenbank der Seite nicht auf dieselbe Weise entfernt wie bei der Verwendung des Rails-Befehls destroy!. Es könnte eine gute Idee sein, dies an einer Kopie der Backup-Datei zu testen, um sicherzustellen, dass nichts beschädigt wird.

Es könnte auch ratsam sein, vor dem Löschen des Tags eine SELECT-Anweisung auszuführen. Das könnte die Ursache des Problems aufzeigen:

SELECT FROM tags WHERE name = <dein_tag_name>;
1 „Gefällt mir“

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