En raison de certains problèmes de déploiement, j'ai arrêté de suivre schema.rb dans git. D'une manière ou d'une autre, j'ai bourré cela et quelque part en cours de route, mon fichier schema.rb a disparu.
Existe-t-il un moyen de régénérer schema.rb à partir de la base de données ou des migrations? Je préférerais ne pas perdre les données existantes.
rake db:schema:dump
sur les rails 2.0Prudent,
va vider le schéma de base de données actuel de la base de données . Cela signifie que si vous avez apporté des modifications à vos migrations, elles ne seront PAS reflétées dans le fichier schema.rb, ce qui n'est pas ce que vous voulez IMO.
Si vous souhaitez recréer le schéma à partir des migrations, procédez comme suit:
la source
rake db:schema:dump
commande.Je pense que cela est toujours valable dans Rails 3 - il régénère le schema.rb à partir de la base de données.
la source
RAILS 5 voies:
ou si vous rencontrez Gem :: LoadError alors:
Remarque:
dans rails 5, il est recommandé que les tâches soient générées / exécutées en utilisant
rails
au lieu derake
, ceci est juste pour se rappeler, les tâches générées par les rails sont d'extension.rake
voir danslib/tasks/myTask.rake
. ce qui signifie que ces tâches peuvent également être exécutées en préfixantrake
.la source
Si vous vous régénérez
schema.rb
localement, tout va bien. Il contient simplement une représentation de la structure de vos tables de base de données. Les données elles-mêmes ne sont pas contenues dans ce fichier.Pour régénérer votre
schema.rb
fichier, exécutez:Ensuite, validez simplement le nouveau
schema.rb
fichier et vous devriez être en forme!la source
Directement à partir du fichier schema.rb lui-même:
Alors ne faites PAS la suggestion de
rake db:migrate
, qui a été suggérée dans la réponse la moins bien notée au moment de la rédaction de cet article.la source
J'ai également eu un problème similaire où mon ancien schéma ne se rafraîchissait pas même si je supprimais la migration.
Donc, ce que j'ai fait a été de supprimer toutes les tables existantes dans la base de données et de les migrer à nouveau. Ensuite, l'exécution de la commande "db: schema: load" m'a donné un nouveau schema.rb.
la source