2010-02-10 5 views
10

Voici donc mon premier vrai projet Ruby on Rails. J'ai appris ma leçon - je n'ai pas fait tous les changements en utilisant les migrations donc les choses sont un peu en désordre. Quelle est la meilleure façon de recommencer avec de nouveaux fichiers de migration et de reconstruire le schéma, etc? Mon projet est trop loin pour reconstruire l'ensemble du projet, mais pas suffisamment loin pour que je me soucie de perdre les migrations que j'ai jusqu'ici. Cela ne me dérange pas non plus de perdre les données dans la base de données. J'essayais de revenir au début mais une partie échoue.Comment revenir au début et recréer/reconstruire de nouvelles migrations

Je sais que c'est un mauvais état, mais la leçon apprise. J'ai juste supprimé tous les fichiers de migrations et reconstruit le fichier de schéma avec db: schema: dump. Je suppose que cela me met dans un état propre avec ma base de données existante, juste des migrations perdues.

Répondre

5

Votre fichier schema.rb doit contenir le schéma réel de votre base de données. Vous pouvez l'utiliser comme point de départ pour créer vos migrations. Vous pouvez créer une nouvelle migration pour chaque table avec le paramètre :force => true pour remplacer l'ancienne table. Ensuite, vous pouvez simplement supprimer les anciennes migrations (vous devrez probablement également supprimer leurs entrées de la table schema_migrations).

Une autre option consiste simplement à mettre à jour les anciennes migrations pour qu'elles correspondent à votre schéma actuel.

+0

Merci - Je viens de supprimer les migrations, vidé les schema_migrations table, puis a couru 'rake db: reset'. Mon schéma n'était pas entièrement à jour donc j'ai dû faire quelques ajustements à la db après ça. Si je dois le faire à nouveau, je ferais la même chose, mais essayer de comprendre s'il existe un moyen de recréer le fichier de schéma à partir de l'état actuel de la base de données. – 99miles

7

Si vous n'êtes pas préoccupé par la perte de données, puis faire

rake db:purge 

Il devrait simplement laisser tomber votre base de données

+9

cela a été des changements à rake db: drop dans Rails 3 (rake db: drop: tout à tomber pour tous les environnements) – jvatic

+0

rake db: reset est plus comme ça – montrealmike

9

si vous souhaitez migrer quelques pas en arrière, vous pouvez

rake db:rollback STEP=2 

Cette commande migrer vos bases de données 2 migrations de retour. Si vous avez besoin d'aide avec les commandes de râteau, type de jus

rake -T 

Cette commande liste toutes les tâches que vous avez dans votre application.

+0

Il liste toutes les commandes qui ont une description. – Timo

Questions connexes