Réinitialisez la base de données (purgez tout), puis amorcez une base de données

159

Existe-t-il une commande rake pour effacer les données des tables de la base de données?

Comment créer un script db: seed pour préremplir des données dans mes tables?

Blankman
la source

Réponses:

160

Vous pouvez tout supprimer et recréer la base de données + les graines avec les deux:

  1. rake db:reset: charges depuis schema.rb
  2. rake db:drop db:create db:migrate db:seed: charges de migrations

Assurez-vous que vous n'avez aucune connexion à db (serveur rails, client sql ..) sinon la base de données ne tombera pas.

schema.rb est un instantané de l'état actuel de votre base de données généré par:

rake db:schema:dump
laffuste
la source
Merci de rappeler aux gens d'éteindre tous les serveurs pour s'assurer que la base de données est correctement supprimée.
aardvarkk
6

Si vous n'avez pas envie de supprimer et de recréer le shebang entier juste pour recharger vos données, vous pouvez utiliser MyModel.destroy_all(ou delete_all) dans le fichier seed.db pour nettoyer une table avant que vos MyModel.create!(...)instructions ne chargent les données. Ensuite, vous pouvez refaire l' db:seedopération encore et encore. (Évidemment, cela n'affecte que les tables dans lesquelles vous avez chargé des données, pas le reste.)

Il y a un "sale hack" sur https://stackoverflow.com/a/14957893/4553442 pour ajouter une opération de "désensemencement" similaire à la migration de haut en bas ...

Tom Hundt
la source
intelligent, recréer tout à partir de zéro à chaque fois a pris
trop
5

Depuis Rails 5, l' rakeoutil de ligne de commande a été aliasé comme railstel maintenant

rails db:reset au lieu de rake db:reset

fonctionnera aussi bien

DazBaldwin
la source
0

Vous pouvez utiliser rake db:resetlorsque vous souhaitez supprimer la base de données locale et recommencer avec les données chargées à partir dedb/seeds.rb . C'est une commande utile lorsque vous êtes encore en train de déterminer votre schéma et que vous devez souvent ajouter des champs aux modèles existants.

Une fois la commande de réinitialisation utilisée, elle effectuera les opérations suivantes: Supprimer la base de données: rake db:drop charger le schéma: rake db:schema:load amorcer les données:rake db:seed

Mais si vous souhaitez supprimer complètement votre base de données, vous pouvez utiliser rake db:drop. La suppression de la base de données supprimera également les conflits de schéma ou les données incorrectes. Si vous souhaitez conserver les données dont vous disposez, assurez-vous de les sauvegarder avant d'exécuter cette commande.

Ceci est un article détaillé sur les commandes les plus importantes de la base de données rake .

Nesha Zoric
la source