8

我无法使用 SQLite3 运行 rake test:functionals,它给了我这个错误:

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 宝石

我正在使用 Netbeans 进行开发,但即使它关闭,我也无法从命令提示符运行测试。

我还检查了 test.sqlite 的句柄是否打开(通过 sysinternals 任务管理器)。

我检查了权限,他们没问题。

我试图删除文件并重新创建它,或者复制到另一个文件名也没有任何运气。

我尝试在计算机启动后立即运行该命令。

任何帮助表示赞赏。

谢谢

4

5 回答 5

3

我刚遇到这个问题。对我来说,这是因为我在测试环境中打开了我的 rails 控制台。关闭了我的会话,它不再抛出错误。

于 2011-09-14T16:26:46.903 回答
2

我的行为非常非常相似:Windows XP、SQLite3、Rails 2.3.4、Rake 0.8.7、Ruby 1.8.6

耙式试验

有效(但我不相信它实际上正在运行单元测试)

耙式测试:单位

耙式测试:功能

两者都失败,并显示“权限被拒绝 - db/test.sqlite3”启用 --trace 后,特定错误发生在 ../rails-2.3.4/lib/task/databases.rake:370 的“文件。如果 File.exist 删除(dbfile)?(dbfile)

所以......长话短说......我评论了它。

这不是一个修复,但它足以让测试为我工作。

于 2010-09-17T17:54:37.357 回答
1

如果您在 Cygwin 下运行,请尝试在您的数据库文件上运行它:

chmod 777 <your-files>

Cygwin 可能会对应该应用哪些权限感到困惑。

是的,我知道这些权限很荒谬,但 Cygwin 有时也是如此......

于 2009-08-05T17:09:43.667 回答
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

我通过从初始化程序中删除数据库要求来修复它。

关于这个问题的奇怪之处在于,测试在为引擎运行时会起作用,但当引擎安装在项目中时不会,它会导致项目的所有测试失败。

于 2014-03-04T20:27:18.903 回答
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有关

于 2010-09-18T08:45:04.297 回答