web-dev-qa-db-ja.com

$ bundle exec rake db:resetコマンドの発生でdb /development.sqlite3を削除できませんでした

$ bundle exec rake db:resetを実行しようとしましたが、コンソールで次のことがわかりました

Couldn't drop db/development.sqlite3 : #<Errno::EACCES: Permission denied - c:/sample_app/db/development.sqlite3>
db/development.sqlite3 already exists
-- create_table("users", {:force=>true})
   -> 0.3940s
-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true})

   -> 0.1280s
-- initialize_schema_migrations_table()
   -> 0.0010s
-- assume_migrated_upto_version(20120419034627, ["c:/sample_app/db/migrate
"])
   -> 0.0040s

どうすれば解決できますか?

編集チュートリアルに従っていたところ、データベースからすべてのデータを安全に削除するために上記のコマンドを実行するように指示されました。また、管理者アカウントも使用しています。

20
WowBow

あなたがするとき db:reset 、実行中ですdb:dropおよびdb:setup 順番通りに。あなたの エラーメッセージdb/development.sqlite削除できませんでした。

Windowsを使用している場合は、Railsサーバーとコンソールを停止する必要があります。そうでない場合は、ファイルが削除されない原因を特定してください。権限の問題である可能性があります。再起動すると、問題も。

41
htanata

私はこれが古い投稿であることを知っていますが、私はこの問題を抱えていました(Windowsでsqlite3の問題が続いています)、再起動、コマンドラインのシャットダウン、サーバーの停止が機能しなかったときに、実際にそれぞれを実行することで問題を解決できました上記のコマンドのhtantaを順番に:1。bundleexec rake db:drop 2. bundle exec rake db:create 3. bundle exec rake db:migrate

とにかくdb:resetがこれらのコマンドだけである場合、なぜそれが機能しないのか理解できませんが、個々のコマンドは機能しますか?

1
grist

同じ問題を解決しようとしています。 Rails Windows上のサーバーは役に立ちませんでしたが、環境全体を再起動することでうまくいきました。bundleexecrake db:resetが実行されましたが、それ以前にサーバーを起動しないでください。同じエラーを呼び出します。続行します。

$ bundle exec rake db:reset
$ bundle exec rake db:populate
$ bundle exec rake test:prepare

その後、Railsサーバーを起動します。

1
Michael L

データベース全体をドロップするには、rake db:setupを指定するだけで、データベースがドロップされて再度作成されます。

0
user3886802

もう1つの考えられる答えは、データベースファイルを開いていることです。それらのファイルを閉じてサーバーを停止すると、機能するはずです。

0