ruby-on-rails - Rails db:migrate:reset 产生 Errno::EACCES Permission denied @unlink_internal

标签 ruby-on-rails ruby sqlite rubygems railstutorial.org

我正在学习 Michael Hartl 的 Rails 教程,在某些时候我们要运行
rails db:migrate:reset
但是,每次我尝试这样做时,我都会遇到有关文件的权限被拒绝的错误

development.sqlite3

我已经尝试过以下我遇到的解决方案:
1. close all programs suspected of using said file and retry task
2. terminate rails console, server, editor and retry task
3. shut/restart pc and executing the task upon restart
4. executing rails db:drop

所有这些都未能让命令运行。唯一可行的解​​决方案是手动删除文件并运行 rails db:migrate

我在运行

Rails 5.0.0.1
Ruby 2.2.5p319
Sqlite3 3.14.1
Windows 10 Professional

我的堆栈跟踪是:

** Invoke db:migrate:reset (first_time)
** Invoke db:drop (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
** Invoke db:check_protected_environments (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config
** Execute db:check_protected_environments
** Execute db:drop
** Invoke db:drop:_unsafe (first_time)
** Invoke db:load_config
** Execute db:drop:_unsafe
Permission denied @ unlink_internal - %path%/sample_app/db/development.sqlite3 Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ unlink_internal - %path%/sample_app/db/development.sqlite3
C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:1450:in unlink'<br/> C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:1450:inblock in remove_file'
C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:1458:in platform_support'<br/> C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:1449:inremove_file'
C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:793:in remove_file'<br/> C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:571:inblock in rm'
C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:570:in each'<br/> C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:570:inrm'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/sqlite_database_tasks.rb:22:in drop'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:136:indrop'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:152:in block in drop_current'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:292:inblock in each_current_configuration'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:291:in each'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:291:ineach_current_configuration'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:151:in drop_current'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/railties/databases.rake:42:inblock (2 levels) in '
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:248:in call'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:248:inblock in execute'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:243:in each'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:243:inexecute'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:187:in block in invoke_with_call_chain'<br/> C:/Ruby22-x64/lib/ruby/2.2.0/monitor.rb:211:inmon_synchronize'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:180:in invoke_with_call_chain'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:173:ininvoke'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-5.0.0.1/lib/active_record/railties/databases.rake:38:in block (2 levels) in <top (required)>'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:248:incall'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:248:in block in execute'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:243:ineach'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:243:in execute'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:187:inblock in invoke_with_call_chain'
C:/Ruby22-x64/lib/ruby/2.2.0/monitor.rb:211:in mon_synchronize'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:180:ininvoke_with_call_chain'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:209:in block in invoke_prerequisites'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:207:ineach'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:207:in invoke_prerequisites'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:186:inblock in invoke_with_call_chain'
C:/Ruby22-x64/lib/ruby/2.2.0/monitor.rb:211:in mon_synchronize'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:180:ininvoke_with_call_chain'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/task.rb:173:in invoke'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:152:ininvoke_task'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:108:in block (2 levels) in top_level'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:108:ineach'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:108:in block in top_level'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:117:inrun_with_threads'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:102:in top_level'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/rake_proxy.rb:13:inblock in run_rake_task'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:178:in standard_exception_handling'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/rake_proxy.rb:10:inrun_rake_task'
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:51:in run_command!'<br/> C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in'
bin/rails:4:in require'<br/> bin/rails:4:in'
Tasks: TOP => db:drop:_unsafe

如何消除此错误并防止它在未来的项目中出现?

最佳答案

我在使用 Windows 10 专业版时遇到同样的错误 | ruby 2.4.1 | rails 5.1.4。我喜欢使用:

rake db:drop:_unsafe
rake db:create
rake db:migrate

关于ruby-on-rails - Rails db:migrate:reset 产生 Errno::EACCES Permission denied @unlink_internal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39414892/

相关文章:

sql - 插入表并将另一列设置为自动递增的列值

ruby-on-rails - 如何在 Rails 中为基于 cookie 的 session 动态设置到期时间

ruby-on-rails - 通过 has_many :through with :conditions 保存连接属性

ruby-on-rails - 如何显示 Rails SOLR 多模式搜索的结果?

ruby-on-rails - 在 Ruby on Rails 中向 index.html.erb 添加分页 - 简单问题

ruby - 从字符串中删除双引号

python - 使用 Python 的 sqlite 文件名列表

ruby-on-rails - rails :How to create a time column with timezone on postgres

ruby-on-rails - rails 轮胎gem elasticsearch在will_paginate中无法正常工作

php - 使用 PDO 准备 SQL 语句