Rails: comment supprimer une migration en attente
Je suis actuellement à la suite de la ruby on rails tutoriel: http://guides.rubyonrails.org/getting_started.html.
Je suis en train d'enregistrer les données dans la base de données. Cependant, lorsque je lance: rails server
j'obtiens l'erreur suivante:
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
J'ai regardé les autres articles et quand je le lance:
bin/rake db:migrate
- Je obtenir un rake aborted!
Après l'exécution:
rake db:abort_if_pending_migrations....
Je vois que:
You have 1 pending migration:
20150805200129 CreateDatabases
SQLite3::SQLException: table "databases" already exists:
et il me dit juste de lancer rake db:migrate recommencer.
il semble qu'il existe déjà, est-il un moyen d'annuler la mise en attente de la migration?
source d'informationauteur Kenny Ellis
Vous devez vous connecter pour publier un commentaire.
Vous la migration peut avoir échoué à mi-chemin (il a créé la table, mais n'a pas fini).
Vous êtes simplement en utilisant l'environnement de développement, vous pouvez simplement déposer base de données et de reconstruire à partir de zéro:
Parfois, même la chute d'un local de développement de la base de données n'est pas une bonne idée.
Il y a de meilleures façons de supprimer/détruire une migration spécifique dans votre application Rails.
Vous pouvez utiliser
rails d migration
commande pour détruire un particulier de la migration:Pour annuler les modifications correspondant à une migration, vous pouvez utiliser
db:migrate:down
méthode comme ceci:Parfois, les choses pourraient être plus salissant et, dans les cas d'une autre chose très pratique est de prendre un coup d'oeil à la
schema_migrations
table dans votre base de données qui a toutes les migrations avec leurversion
enregistré.Vous pouvez supprimer une migration à partir de ce tableau comme ceci:
si vous ne voulez pas que la migration d'être présent plus.
Si vous êtes comme moi et de maintenir la structure de base de données à l'extérieur des Rails, vous pouvez simplement supprimer le fichier de migration de db/migration. J'ai obtenu l'erreur dans le cas des OP de la question lorsque j'ai utilisé les rails de générer de la commande pour créer un modèle de classe, en oubliant qu'il crée également un fichier de migration.
N'utilisez pas cette méthode si vous comptez sur les Rails pour maintenir la structure de base de données!
- Je garder mon Rails de la structure de fichier jusqu'à ce jour par la construction de la base de données à l'aide de:
Si vous voulez revenir le mauvais migrations, Vous pouvez déposer de l'ensemble de la db à l'aide de ceci:
Puis retirez les migrations fichier manuellement(Cette coutume de corrompre la db lorsque vous recréez que le Schéma des migrations serait abandonnée).
Puis exécutez
Et si il y a des données pour être ensemencées, puis exécutez ce ainsi