Rake db:migrate - comment puis-je annuler toutes les migrations et les refaire
Est-il rapide rake db:commande rollback pour tous les migrations?
Vous devez vous connecter pour publier un commentaire.
Est-il rapide rake db:commande rollback pour tous les migrations?
Vous devez vous connecter pour publier un commentaire.
La restauration de tous les migrations
À la restauration de toutes les migrations, la meilleure solution est celle @Claudio Floreani proposé:
Ceci annulera toutes les migrations sans perdre de données. Ensuite, exécutez toutes les migrations de nouveau avec
La réinitialisation de la base de données (cela supprime toutes les données)
Les deux méthodes expliquées ci-dessous permettra de déposer votre base de données et vous perdrez toutes les données, alors vous ne devez les utiliser si vous êtes sûr de ce que vous êtes en train de faire.
Réinitialiser
Cette méthode supprime la base de données et exécute les migrations de nouveau.
Chargement du schéma dernière
Cette méthode permettra de supprimer la base de données et de charger les données du dernier schéma.
Vous pouvez voir plus d'informations dans ce post: Différence entre rake db:migrate db:réinitialiser et db:schéma:charge
Grâce à @Claudio Floreani et tous les utilisateurs qui ont formulé des commentaires pour améliorer la réponse.
rake db:migrate:reset
n'a pas de rollback de migration, c'est ce que la question est vraiment se poser.rake db:migrate VERSION=0
Si vous voulez vraiment restauration tous les migrations, et pas seulement la base de données à un état primitif ou le dernier schéma, vous devez exécuter:
Ce sera fait, restauration de tout le chemin en bas de chaque migration et de s'assurer que chaque migration est réversible.
Si vous avez maintenant le problème
vous verrez que toutes les migrations sont toujours là, mais ils sont dans un " bas " (non appliqué) de l'état.
Les autres commandes qui implique une
rake db:reset
ourake db:drop
(comme dans les réponses par @Orlando ou @Alex Falke) ne pourra pas faire de restauration à tous: c'est, ils ne pourront pas garantir que chaque migration est réversible.En outre,
rake db:drop
ne peut pas être exécutée si la base de données est accessible par d'autres utilisateurs, tandis que les annulations peuvent être effectuées vivre (même si ce n'est généralement pas recommandé). Et la dernière mais pas moins, il suffit de suppression et recréation de la base de données permettra également de supprimer le schéma des migrations de table: si quelqu'un s'exécuterake db:migrate:status
après la base de données a été abandonné, il sera répondu avec "Schéma des migrations de la table n'existe pas encore" et n'aura pas d'indices sur les migrations peuvent être appliqués (à moins qu'il le sait pas encore ou peut en faire la liste).suffit d'utiliser
rake db:reset
, qui va détruire votre base de données (même à l'annulation de toutes les migrations) et de réinitialiser le dernier schéma.Mise à JOUR: une approche correcte sera à l'aide de
rake db:migrate:reset
. Qui va supprimer la base de données, créer de nouveau, et l'exécution de toutes les migrations, au lieu de tout remettre à plus tard schéma.Si un problème d'autorisation de pose (comme cela m'est arrivé), vous pourriez peut-être essayez de laisser tomber toutes les tables de base de données comme je l'ai fait avec rubymine (il suffit d'ouvrir la base de données de l'outil de la fenêtre, sélectionnez toutes les tables et faites un clic droit-> drop), il devrait être similaire avec d'autres IDEs. Certains tableaux comme sqlite_master et sqlite_sequence ont été commodément ignoré dans la liste.
Cela m'a permis de faire
et tout a bien fonctionné. Bien sûr, vous perdez toutes les données!