Je voudrais supprimer/supprimer un fichier de migration. Comment pourrais-je m'y prendre? Je sais que des questions similaires se posent ici, mais à titre de mise à jour, existe-t-il un meilleur moyen que de faire un script/détruire?
Aussi, devrais-je faire un db:reset
ou db:drop
si je supprime/supprime une migration?
D'habitude je:
rake db:migrate VERSION=XXX
sur tous les environnements, à la version antérieure à celle que je veux supprimer.rake db:migrate
encore.Si votre application est déjà en production ou en attente, il est plus prudent d'écrire une autre migration qui détruit votre table ou vos colonnes.
Une autre excellente référence pour les migrations est la suivante: http://guides.rubyonrails.org/migrations.html
Une autre façon de supprimer la migration:
$ Rails d migration SameMigrationNameAsUsedToGenerate
Utilisez-le avant que rake db:migrate
Soit exécuté car les modifications dans la base de données resteront indéfiniment :) - ou supprimez les modifications manuellement
Exécutez les commandes ci-dessous à partir du répertoire de base de l'application:
rake db:migrate:down VERSION="20140311142212"
(ici la version est l'horodatage ajouté par Rails lors de la création de la migration. Cette action annule les modifications de la base de données dues à 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 _" de votre nom de fichier de migration pour l'obtenir)
Nous pouvons également réduire la migration en tant que
rake db:migrate:down VERSION=versionnumber
Référez-vous Rubyonrailsguide
On peut utiliser,
$ Rails d migration table_name
Ce qui supprimera la migration.
Parfois, je me trouvais en train de supprimer le fichier de migration, puis de supprimer l'entrée correspondante de la base de données schema_migrations. Ce n'est pas beau, mais ça marche.
Aucune de ces réponses ne correspond parfaitement 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é supprimée. Le problème est lorsqu’une migration est exécutée, Rails ajoute la version dans un schema_migrations
table dans la base de données. Ainsi, même s'il ne figure pas 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 dirigez-vous vers la console de base de données:
Rails dbconsole
Maintenant, supprimez les versions de la table de migration manuellement:
delete from schema_migrations where version='<version>';
Vous devriez maintenant être bon.
Je viens d'avoir ce même problème:
Cela a résolu le problème pour moi