rails 5 db:reset不工作

时间:2016-08-27 15:13:15

标签: ruby-on-rails ruby-on-rails-5

我想重置rails 5项目的数据库,但rails db:reset命令无效。

errormessage的:

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)

5 个答案:

答案 0 :(得分:14)

通常当rake db:reset没有运行或为我工作时,我只需删除development.sqlite3和schema.rb文件,然后重新运行rake db:migrate命令重新生成这两个文件。但请注意不要在生产环境中尝试这一点。

答案 1 :(得分:1)

看起来rails试图删除该文件但没有成功。 请检查以下内容:

  • 是您的应用运行并连接到数据库文件? - 在执行rake db:reset之前终止应用程序。
  • 是连接到数据库文件的其他一些进程(例如数据库查看器)吗? - 与上述相同,在重置前终止它。
  • 在最坏的情况下(您无法确定阻止文件的内容),重新启动后立即rake db:reset很有可能成功运行。

答案 2 :(得分:1)

当您执行 rake db:reset 时,它会按顺序运行db:drop和db:setup。

1.也许你需要停止你的Rails服务器和控制台。

2.重启也可以解决问题。

答案 3 :(得分:1)

我被告知要为rails 5添加输入作为答案,所以请求...

首先,停止rails服务器。

其次,运行这3个命令......

rails db:drop
rails db:schema:load
rails db:reset

我讨厌挖掘文件,所以这更容易和对我来说比删除一些文件更快。警告:无论您是否使用我的修复程序 - 始终每天在某处备份您的架构(例如使用repo系统...... github / bitbucket)。

我认为'rake'可用于代替导轨5之前版本的导轨,但尚未测试回导轨3或2。

正如@ govind-shaw所说......不管怎样,你必须停止rails服务器&amp;再次启动它。

答案 4 :(得分:1)

尝试rails db:drop:_unsafe参见https://github.com/rails/rails/issues/31589