Ich habe "rake db: migrate" ausgeführt, um schema.db mit meinem Datenbankschema neu zu synchronisieren. Aber es ist fehlgeschlagen und hat gesagt, dass einer meiner Tische bereits existiert. Ich denke, es hat versucht, den Tisch neu zu erstellen. Wenn Sie nur schema.rb aktualisieren möchten, um alle Änderungen widerzuspiegeln, die Sie unabhängig von Rails in der Datenbank vorgenommen haben, welchen Befehl sollten Sie verwenden, wenn nicht "rake db: migrate"? Und was ist die beste Quelle für Dokumentation über diese Art von Dingen?Ist Rake db: migrieren Sie den richtigen Befehl, um schema.rb erneut mit Ihrem Datenbankschema zu synchronisieren?
Antwort
"rake db: migrate" versucht alle ausstehenden Migrationen für Ihr Projekt auszuführen. Wenn Sie nur das Schema ausgeben wollen, machen Sie ein "Rake db: schema: dump".
Aber ich denke, Sie haben ein Problem, wo es heißt, dass die Tabelle bereits existiert. Eine Ihrer Migrationen schlägt fehl, da die Tabelle, die sie hinzuzufügen versucht, bereits in Ihrer Datenbank vorhanden ist. Hast du eines von Hand erstellt? Haben Sie eine Migration abgeschrieben, aber haben Sie kein Down geschrieben? Sie müssen dies beheben, bevor Sie zukünftige Migrationen schreiben können. Wenn es nur ein Fehler ist, und der Tisch ist da und richtig und du willst das ignorieren. Ich empfehle es, das Problem zu umgehen, indem ich die create-Tabelle in der fehlgeschlagenen Migration auskommentiere. Führen Sie dann "rake db: migrate" aus. Dann aber die Tabelle erstellen zurück. Dadurch wird Ihre Schemaversion aktualisiert.
Stellen Sie sicher, dass Sie bei allen Migrationen korrekte Einstellungen vornehmen.
Gute Erklärung. Vielen Dank. – drizzle
Versuchen Sie rake db:schema:dump
oder .
Dokumentation in Bezug auf Ihre letzte Frage zu beantworten:
- eine Führung zu den Schienen Rake Aufgaben für Schienen 2.1+: http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-and-rake.htm
- eine gute Screencasts auf Migrationen: http://railscasts.com/episodes/107-migrations-in-rails-2-1
ich gefunden habe, dass Gelegentlich, wenn die Dinge ein wenig merkwürdig werden, werden Sie sich in einer Situation befinden, in der Rails eine Migration durchführen möchte, die sie zu Recht in Erwägung ziehen sollte (die Tabelle existiert bereits usw.). Sie können eine Migration markieren, wie von der Suche nach seiner Nummer (die Nummer Teil am Anfang des Dateinamens) getan, gehen in mysql und die Ausgabe einer Abfrage wie folgt:
insert into schema_migrations values('20090521153438');
(oder was auch immer die Zahl der Migration ist)
Oder wenn es ein Plugin Migration ist Lauf mit Wüste des migrate_plugin ist:
insert into plugin_schema_migrations values('my_plugin', '005');
Danke für den Tipp. – Espen
Gute Trauer, danke dafür! Dies ist die einzige Lösung, die ich gesehen habe, die nicht ** alle Ihre Daten ** löscht. Verwenden Sie dies, wenn Sie Daten in Tabellen haben, die Sie nicht löschen möchten :) – FireDragon
ein anderer, wenn Hacky, Taktik ist der Körper der anstößigen Migration auskommentieren und dann migrieren. – hoff2
Versuchen
RAILS_ENV=development rake db:drop
vor
RAILS_ENV=development rake db:migrate
und glücklich sein!
Sicherzustellen, dass Sie es auf Ihrem Test- oder Entwicklungsumgebung ausführen, da dies die Datenbank/Tabellen
rake db:migrate:reset
Ihre Tabellen alle sinkt fallen wird, alle Migrationen laufen und eine neue schema.rb
Datei erstellen.
Verwendung rake db:schema:dump
.
$ rake -T | grep schema
rake db:schema:dump # Create a db/schema.rb file that is portable
# against any database supported by ActiveRecord
rake db:schema:dump
neu erstellt die Datei db/schema.rb
ohne wieder alle Ihre Migrationen zu laufen oder fallen alle Tabellen (was impliziert, die Daten in diesen Tabellen zu verlieren), so ist es die am wenigsten invasive Art und Weise Sie zunächst versuchen können.
- 1. Rake db: migrieren Aktualisierung Schema.rb mit gelöschten Tabellen
- 2. rails db: migrieren vs rake db: migrieren
- 3. Odd Rake db: migrieren Ausgabe
- 4. Wie Rollback nur einen Schritt mit Rake db: migrieren
- 5. Wie benutze ich Rake db: migrieren
- 6. Wie synchronisieren Sie enums in DB mit Ihrem PHP-Code?
- 7. Rails - Add Standardwert affter Rake db: migrieren
- 8. aktualisiert auf Rails 4.2.6: Rake db: migrieren Einfügen von Spaltenlimits in schema.rb
- 9. Kann Heroku nicht ausführen Rake db: migrieren
- 10. Rake db: migrieren löscht meine Datenbank
- 11. Rails: Rake db: migrieren * sehr * langsam auf Oracle
- 12. Bündel Exec Rake db: migrieren >> ROUTING ERROR
- 13. PRIMARY KEY Problem beim Erstellen von Tabellen in Rails mit Rake db: migrieren Befehl mit mysql
- 14. Heroku laufen rake db: migrate Fehler Rake Befehl nicht gefunden
- 15. $ exec rake db bündeln: Befehl Anhebung nicht zurückgesetzt db/development.sqlite3
- 16. Wie machen Sie Rake db: Schema: Dump haben die Zeichensatz und Kollation der Felder in schema.rb?
- 17. Rake db: migrieren VERSION = 0 Tabelle existiert nicht
- 18. nichts passiert, wenn ich Rake db laufen: migrieren
- 19. RoR Erste Schritte: Rake db: Migrieren undefinierte Methode 'Referenz'
- 20. rake db: migrate RAILS_ENV = Entwicklung
- 21. Ist Rake db: schema: dump receate schema.rb von Migrationen oder die Datenbank selbst?
- 22. Kann nicht Heroku laufen rake db durch meine app migrieren
- 23. DB-Erstellung in Schienen mit dem Rake-Befehl
- 24. neu zu Schienen, Einrichten von db dann laufen rake db: erstellen/migrieren
- 25. Verschieben des db Ordner Bündel exec rake db erstellt: wandern
- 26. Verlinken/Synchronisieren von SQL DB mit MySQL DB
- 27. Wie migrieren gespeicherte Prozeduren zum Testen von db?
- 28. Schienen 4 - Rake Befehl zeigt deprecation Warnung jedes Mal laufe ich die rake db: migrate Befehl
- 29. Rake db: create vs Rake db: create: alle
- 30. Wie rake db machen: wandern schema.rb erzeugen bei der Verwendung von SQL Schema-Format
Probieren Sie ** 'Rake db: schema: dump' ** und geben Sie dann Ihrem Editor ein paar Augenblicke, um die Dateiänderungen abzuholen. –