2017-02-07 3 views
1

Während ich an einem Ruby on Rails-Gruppenprojekt arbeitete, fand ich zwei Tabellen in meiner schema.rb-Datei, die mit keiner der Migrationsverlaufsdateien übereinstimmt. Gibt es einen Rake-Befehl, um die Schemadatei der unbeabsichtigten Tabellen zu bereinigen?Unerwünschte Tabellen in der Schemadatei für Schienen App

Ich habe versucht, Befehle von rake -T, aber ich habe nicht gefunden, die die Schema-Datei neu erstellen könnte.

rake db:dump hat die Schemadatei nicht geändert.

rake db:schema:dump schien auch nicht die Schemadatei zu ändern.

+0

versuchen, die schema.rb-Datei löschen und db ausführen: schema: dump wieder – eiko

+0

@eiko Aber 'schema.rb' ist eine Darstellung der Datenbank, die' db: schema: dump' erzeugt, das Problem ist, dass es Streuner sind Tabellen in der Datenbank. –

+0

@muistooshort Ich habe einen entfernten (vielleicht falschen) Speicher, der manchmal scheme: dump würde nichts tun, weil Rake dachte, dass schema.rb bereits auf dem neuesten Stand war. Ich dachte mir, es würde nur ein paar Sekunden dauern, um es zu versuchen und es war einen Versuch wert. Aber du hast Recht, dass es wahrscheinlich ein Problem in der db selbst ist. – eiko

Antwort

1

würde ich sagen, dass der sicherste Weg, dies zu tun, wie diese

wäre
drop_table :bad_table_names if (table_exists? :bad_table_names) 

so sollte es es aus dem Schema entfernen sowie fällt die Tabelle zu überprüfen, ob es existiert. Wenn nicht, würde es nur sicher passieren.

+0

Ich hoffe, ich verstehe richtig, was Sie geschrieben haben, ist kein Rake-Befehl, sondern es wird nur eine andere Migrationsdatei ausgeführt, um die unerwünschten Tabellen zu löschen. – Ian

+0

ist eine Migration –

0

db:schema:dump erstellt das Schema aus dem, was in der Datenbank vorhanden ist. Wenn Sie die Tabellen aus der Datenbank löschen und dann erneut ausführen, werden die Tabellen entfernt.

0

rake db:migrate sollte die Schemadatei mit dem aktuellen DB-Status aktualisieren.

Verwandte Themen