rails 5 db:reset不工作

我想重置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 `' Tasks: TOP => db:drop:_unsafe (See full trace by running task with --trace) 

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

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

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

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

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

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

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

首先,停止rails服务器。

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

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

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

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

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