我尝试运行$ 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
我该如何解决?
编辑我正在关注一个教程,它告诉我运行上面的命令来安全地删除数据库中的所有数据。我也在使用管理员帐户。
答案 0 :(得分:41)
当您执行db:reset
时,它按顺序运行db:drop
和db: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,然后再次为你创建数据库