Tisch (e) mit Schienenkonsole abschneiden
Habe ich diese testingdatabase, die inzwischen gestopft mit Müll. Nun ich habe ein paar Tabelle.destroy_all Befehle in der rails-Konsole, die löscht alle Datensätze und Abhängigkeiten, die ist genial. Aber ich würde gerne alles abschneiden, damit die ID ' s etc. bei 1 beginnen wieder. Gibt es eine Möglichkeit in Rails 3?
InformationsquelleAutor der Frage CaptainCarl | 2012-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Akzeptierte Antwort funktioniert nur, wenn Sie neu erstellen zu müssen die gesamte Datenbank.
Zum löschen einer einzelnen Tabelle (mit den callbacks) und um die IDs zu Beginn von 1:
Wenn Sie Sqlite nicht unterstützt kürzen, so tun Sie das folgende:
InformationsquelleAutor der Antwort Ravi Sankar Raju
Dieser arbeitete für mich -
ActiveRecord::Base.connection.execute("TRUNCATE table_name")
InformationsquelleAutor der Antwort Mr.Quack
Einfach die Datenbank neu erstellen auf den nächsten test ausführen (dies geschieht automatisch nach einem Sturz).
rake db:drop RAILS_ENV=test
InformationsquelleAutor der Antwort Yam Marcovic
Könnten Sie auch tun
rake db:rollback STEP=3 RAILS_ENV=test
wo die 3 steht für die Anzahl der Migrationen, die Sie haben in der db/migrate. Im Beispiel: Wenn ich in
So, ich habe 5-Migrationen insgesamt zu entfernen. Wenn ich
rake db:rollback STEP=5 RAILS_ENV=test
alle Tabellen werden Tropfen von meiner TEST-Datenbank und wenn ich entfernen RAILS_ENV=test, als alle ENVIRONNMENT (Produktion, test, Entwicklung) Tabellen löschen und es reinigt auch db/shema.rb-Datei die migration von Daten.InformationsquelleAutor der Antwort Papouche Guinslyzinho
rake db:reset
führenrake db:drop db:setup
. In anderen Worten, löschen Sie die Datenbank und den setup der Datenbank wieder.Quelle
InformationsquelleAutor der Antwort Eva
InformationsquelleAutor der Antwort Carlos Luis Rojas Aragonés
Davon ausgegangen, dass Sie MySQL-oder Postgre und nicht SQlite3 (das nicht unterstützen
TRUNCATE
), könnten Sie Folgendes tun:Beachten Sie, dass dies nicht berufen ActiveRecord-callbacks.
InformationsquelleAutor der Antwort jsears
Wenn Sie möchten, kürzen Sie alles und starten Sie eine neue DB mit nur dem schema zu tun:
(Dies wird nicht trigger Ihr ActiveRecord-Modell-Rückrufe)
InformationsquelleAutor der Antwort adrienbourgeois
(Ein bisschen spät zu der party, ich weiß)
Fragen, tun Sie dies in der Konsole:
Als gut funktioniert...
Dies ist im wesentlichen eine Schleife durch alle Beiträge und zerstört Sie. Es ändert nicht Ihre auto-Inkrement-Wert, obwohl...
Gleichen Logik sollte die Arbeit für Rails 3 als gut (obwohl ich bin mit Schienen 4)
InformationsquelleAutor der Antwort Justin E