Je souhaite supprimer / supprimer un fichier de migration. Comment pourrais-je faire ça? Je sais qu'il y a des questions similaires ici, mais comme mise à jour, y a-t-il un meilleur moyen que de faire un script / détruire?
Aussi, dois-je faire une db:reset
ou db:drop
si je supprime / supprime une migration?
ruby-on-rails
ruby-on-rails-3
file-io
alvincrespo
la source
la source
self.down
méthode définie lors de votre migration pour «rétrograder» votre base de données.rake db:migrate:status
vous montrera l'ID du fichier manquant, que vous pouvez utiliser pour le recréer. Une fois de retour, vous pouvez suivre les conseils de cette réponse jusqu'à la victoire.db:migrate:status
est une bouée de sauvetage!Une autre façon de supprimer la migration:
Utilisez-le avant d'
rake db:migrate
être exécuté car les modifications de la base de données resteront pour toujours :) - ou supprimez les modifications manuellementla source
Exécutez les commandes ci-dessous à partir du répertoire d'accueil de l'application:
rake db:migrate:down VERSION="20140311142212"
(ici la version est l'horodatage ajouté par les rails lors de la création de la migration. Cette action annulera les modifications de la base de données en raison de cette migration)Run "rails destroy migration migration_name"
(nom_migration est celui que vous avez choisi lors de la création de la migration. Supprimez " timestamp_ " du nom de votre fichier de migration pour l'obtenir)la source
rails d migration migration_name
Vous pouvez également exécuter une migration vers le bas comme ceci:
Reportez-vous au guide Ruby on Rails sur les migrations pour plus d'informations.
la source
On peut utiliser,
Ce qui supprimera la migration.
la source
Parfois, je me suis retrouvé à supprimer le fichier de migration, puis à supprimer l'entrée correspondante sur la table schema_migrations de la base de données. Ce n'est pas beau, mais ça marche.
la source
Cela fonctionne également dans Rails 5.
Si la migration était la plus récente, vous pouvez supprimer la ou les colonnes de base de données ajoutées par la migration en procédant comme suit:
puis supprimez le fichier de migration lui-même en exécutant:
la source
Regardez 4.1 Rolling Back
http://guides.rubyonrails.org/migrations.html
$ rake db: restauration
la source
Aucune de ces réponses ne correspondait tout à fait au problème que j'avais car la migration que je voulais supprimer était manquante: j'avais créé et exécuté une migration dans une autre branche, qui a ensuite été rejetée. Le problème est que lorsqu'une migration est exécutée, rails ajoute la version dans une
schema_migrations
table de la base de données. Ainsi, même s'il n'est pas répertorié dans votre structure ou schéma de base de données, rails le recherche. Vous pouvez révéler ces migrations orphelines en exécutant:rails db:migrate:status
Notez les versions des migrations manquantes et accédez à la console db:
rails dbconsole
Supprimez maintenant les versions de la table de migration manuellement:
delete from schema_migrations where version='<version>';
Vous devriez maintenant être bon.
la source
J'ai juste eu ce même problème:
Cela a réglé ça pour moi
la source
Note latérale: À partir de rails 5.0.0
rake
a été changé enrails
Donc, procédez comme suitrails db: migrer VERSION = 0
la source