rails 5 db:reset 不工作

rails 5 db:reset not working

我想重置我的 rails 5 项目的数据库,但是 rails db:reset 命令不起作用。

错误信息:

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)

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

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

通常当 rake db:reset 不 运行 或为我工作时,我只是删除 development.sqlite3 和 schema.rb 文件并重新 运行 rake db:migrate 命令重新生成两个文件。但请注意切勿在生产环境中尝试此操作。

当你做 rake db:reset 时,它是 运行 db:drop 和 db:setup 的顺序。

1.Maybe 您需要停止 Rails 服务器和控制台。

2.A重启也可能解决问题。

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

首先,停止 rails 服务器。

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

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

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

我相信 'rake' 可以代替 rails 用于 rails 5 之前的版本,但还没有测试回 rails 3 或 2。

正如@govind-shaw 所说...无论哪种方式,您都必须停止 rails 服务器并重新启动它。

试试 rails db:drop:_unsafe 看看 https://github.com/rails/rails/issues/31589