web-dev-qa-db-fra.com

Réinitialiser la base de données (tout purger), puis créer une base de données

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?

151
Blankman

J'utilise rake db:reset qui supprime puis recrée la base de données et inclut votre fichier seeds.rb . http://guides.rubyonrails.org/migrations.html#resetting-the-database

270
JackCA

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

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

Assurez-vous de ne pas avoir de connexions à la base de données (serveur Rails, client SQL ..), sinon la base de données ne sera pas supprimée.

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

rake db:schema:dump
156
laffuste

Si vous n'avez pas envie de laisser tomber et de recréer tout le Shebang uniquement 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 instructions MyModel.create!(...) ne chargent les données. Ensuite, vous pouvez refaire l'opération db:seed encore et encore. (Évidemment, cela n'affecte que les tables dans lesquelles vous avez chargé des données, pas le reste.)

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

6
Tom Hundt

A partir de Rails 5, l’outil rake en ligne de commande a été aliasé avec Rails maintenant

Rails db:reset au lieu de rake db:reset

fonctionnera aussi bien

3
DazBaldwin

Vous pouvez utiliser rake db:reset lorsque vous souhaitez supprimer la base de données locale et recommencer à zéro avec les données chargées à partir de db/seeds.rb. Cette commande est 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 que la commande de réinitialisation est utilisée, les opérations suivantes seront effectuées: Supprimez la base de données: rake db:drop Chargez le schéma: rake db:schema:load Générez les données: rake db:seed

Mais si vous voulez 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 vos données, assurez-vous de les sauvegarder avant d'exécuter cette commande.

Ceci est un article détaillé sur les commandes les plus importantes de rake database

0
Nesha Zoric