$ bundle exec rake db:reset命令raise不能删除db / development.sqlite3

时间:2012-04-24 01:23:04

标签: ruby-on-rails ruby ruby-on-rails-3 sqlite railstutorial.org

我尝试运行$ 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

我该如何解决?

编辑我正在关注一个教程,它告诉我运行上面的命令来安全地删除数据库中的所有数据。我也在使用管理员帐户。

5 个答案:

答案 0 :(得分:41)

当您执行db:reset时,它按顺序运行db:dropdb:setup。您的error message表示无法删除db/development.sqlite

如果您使用的是Windows,可能需要停止Rails服务器和控制台。否则,找出阻止文件被删除的内容。这可能是许可问题。重启也可以解决问题。

答案 1 :(得分:1)

我知道这是一个旧帖子,但我刚遇到这个问题(Windows继续出现sqlite3问题),在重启,关闭命令行,停止服务器无法正常工作时,我确实设法解决了这个问题。实际上按顺序运行上面提到的每个命令htanta: 1.捆绑exec rake db:drop 2.捆绑exec rake db:create 3.捆绑exec rake db:migrate

如果db:reset只是这些命令,我​​不明白为什么它不起作用,但各个命令呢?

答案 2 :(得分:1)

一直试图解决同样的问题。在Windows上停止Rails服务器并没有帮助,但是重新启动整个环境就行了,捆绑了exec rake db:reset,但确保在此之前不启动服务器,因为它会调用相同的错误。

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

然后启动Rails服务器。

答案 3 :(得分:0)

另一个可能的答案是您打开了一个数据库文件。关闭这些文件并停止服务器,它应该可以工作。

答案 4 :(得分:0)

对于删除整个数据库,只需给rake db:setup down,然后再次为你创建数据库