web-dev-qa-db-fra.com

rails 5 db: reset ne fonctionne pas

Je souhaite réinitialiser la base de données de mon projet Rails 5, mais la commande Rails db:reset ne fonctionne pas.

message d'erreur:

Permission denied @ unlink_internal - C:/sites5/dawnrebirth/db/development.sqlite3
Couldn't drop database 'db/development.sqlite3'
Rails aborted!
Errno::EACCES: Permission denied @ unlink_internal - C:/sites5/dawnrebirth/db/development.sqlite3
bin/Rails:4:in `require'
bin/Rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
7
Max

Généralement, lorsque rake db:reset ne fonctionne pas ou ne fonctionne pas pour moi, je supprime simplement les fichiers development.sqlite3 et schema.rb, puis réexécute la commande rake db:migrate pour régénérer les deux fichiers. Mais prenez note pour ne jamais essayer ceci dans un environnement de production s'il vous plaît.

14
mayorsanmayor

On m'a dit d'ajouter mon entrée pour Rails 5 comme réponse, donc sur demande ...

Tout d’abord, arrêtez le serveur Rails.

Deuxièmement, lancez ces 3 commandes ...

Rails db:drop
Rails db:schema:load
Rails db:reset

Je n'aime pas fouiller dans les fichiers, c'est donc plus facile et plus rapide que de supprimer un fichier. Mise en garde: que vous utilisiez mon correctif ou non - sauvegardez toujours votre schéma quelque part tous les jours (comme avec un système de référentiel ... github/bitbucket).

Je pense que 'rake' peut être utilisé à la place de Rails pour les versions antérieures à Rails 5, mais n'a pas encore été testé sur Rails 3 ou 2.

Comme @ govind-shaw a dit ... de toute façon, vous devez arrêter le serveur Rails et le redémarrer.

1
Mirv - Matt

On dirait que Rails a essayé de supprimer le fichier mais n'a pas réussi. Vérifiez les éléments suivants: 

  • votre application est-elle en cours d'exécution et connectée au fichier de base de données? - Terminez l'application avant d'exécuter rake db:reset.
  • un autre processus (un visualiseur de base de données, par exemple) est-il connecté au fichier de base de données? - Comme ci-dessus, terminez-le avant de le réinitialiser.
  • dans le pire des cas (vous ne pouvez pas déterminer ce qui bloque le fichier), un rake db:reset immédiatement après le redémarrage a une forte probabilité de s'exécuter correctement.
1
Baradzed

try Rails db:drop:_unsafe voir https://github.com/Rails/rails/issues/31589

1
barlop

Quand vous faites rake db: reset , il exécute db: drop et db: setup en séquence.

1.Vous devez peut-être arrêter votre serveur et votre console Rails.

2. Un redémarrage peut également résoudre le problème.

1
Govind shaw