我无法运行rake test:使用SQLite3的函数,它给了我这个错误:
rake aborted!
Permission denied - db/test.sqlite
(See full trace by running task with --trace)
我的设置是在Windows XP上。 几周前测试工作正在进行。 Rails 2.3.2,Rake 0.8.7,sqlite3-ruby 1.2.5 gems
我正在使用Netbeans进行开发,但即使它已经关闭,我也无法从命令提示符运行测试。
我还检查了没有打开test.sqlite的句柄(通过sysinternals任务管理器)。
我检查了权限,没关系。
我试图删除该文件并重新创建它,或者复制到另一个文件名而没有任何运气。
我在计算机启动后立即尝试运行该命令。
感谢任何帮助。
由于
答案 0 :(得分:3)
我刚遇到这个问题。对我来说,这是因为我在测试环境中打开了我的rails控制台。关闭我的会话,它不再抛出错误。
答案 1 :(得分:2)
非常非常类似的行为:Windows XP,SQLite3,Rails 2.3.4,Rake 0.8.7,Ruby 1.8.6
rake test
有效(但我不相信它实际上正在运行单元测试)
佣金测试:单位
和
rake test:functionals
都失败并显示“权限被拒绝 - db / test.sqlite3” 启用了--trace后,特定错误发生在../rails-2.3.4/lib/task/databases.rake:370一行,如果是File.exist?(dbfile),则读取“File.delete(dbfile)
所以...长话短说......我评论了它。
这不是一个修复,但这足以让测试对我起作用。
答案 2 :(得分:1)
如果您在Cygwin下运行,请尝试在数据库文件上运行:
chmod 777 <your-files>
Cygwin可能会对应该应用哪些权限感到困惑。
是的我知道这些权限是荒谬的,但Cygwin有时也是......
答案 3 :(得分:0)
只是一个平底船,但您是否尝试将config/database.yml
中的路径更改为
database: db\test.sqlite3
即。一个反斜杠而不是一个前锋。甚至是完整的dos风格路径。问题可能与此https://rails.lighthouseapp.com/projects/8994/tickets/4153-dbcreate-cannot-open-database-for-sqlite3-on-windows-with-cygwin
有关答案 4 :(得分:0)
我也遇到了这个问题,我发现罪魁祸首是在环境加载期间查询数据库并阻止sqlite3文件被删除的引擎中的初始化器:
module Frame
class Engine < ::Rails::Engine
isolate_namespace Frame
# Engine initializer causing the problem.
initializer "frame.wrap_parameters" do
ActiveSupport.on_load(:action_controller) do
if respond_to?(:wrap_parameters)
# This is the problem line, Link is a model and Link.attribute_names
# is accessing the DB.
wrap_parameters Link, include: Link.attribute_names + [:parent_id]
end
end
end
end
end
我通过从初始化程序中删除数据库要求来修复它。
关于这个问题的奇怪之处在于测试在为引擎运行它们时会起作用,但是当引擎安装在项目中时,它不会导致所有项目的测试都失败。