使用SQLite数据库进行开发时,如何在Windows中使用rake db:drop引发权限拒绝错误?

问题描述

环境:Windows 10 19041上的Rails 6

at least one other question中所述,当您的开发数据库为SQLite时,尝试调用rake db:droprake db:reset会导致Windows上的权限被拒绝错误:

C:\tools\ruby27\bin\ruby.exe C:\Users\Karu\Dropbox\Projects\grc-rails\bin\rails db:reset
Permission denied @ apply2files - C:/Users/Karu/Dropbox/Projects/grc-rails/db/development.sqlite3
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ apply2files - C:/Users/Karu/Dropbox/Projects/grc-rails/db/development.sqlite3
C:/Users/Karu/Dropbox/Projects/grc-rails/bin/rails:4:in `require'
C:/Users/Karu/Dropbox/Projects/grc-rails/bin/rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

这不是实际的文件权限问题,因为我登录的用户具有文件的完整权限,因此我可以手动删除它。相反,rake任务似乎需要初始化Rails应用程序,这会导致开发数据库在该过程中被打开以供读取。您可以在非Windows系统上删除打开的文件。

我要在此处完成的是使db:reset正常运行。也就是说,它应该通过一次操作删除数据库,运行迁移并加载种子数据。

我对以下任何解决方法都不感兴趣:

  • 更改操作系统(主机或VM)
  • 将此操作分为三个独立的操作(删除文件,db:migrate,db:seed-rails初始化时间很长,每添加一次手动操作都意味着重复此初始化时间)

理想情况下,有一种方法可以覆盖db:reset(或更具体地说,是db:drop)任务,以便仅在Rails应用初始化之前执行裸文件删除。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...