【问题标题】:Rails 3.1: Sqlite exceptionRails 3.1:Sqlite 异常
【发布时间】:2012-02-12 14:34:49
【问题描述】:

我尝试在 VDS 上启动非常简单的 Ruby on Rails 应用程序。我使用 Nginx、Phusion Passenger 和 Sqlite3。我有root权限。

创建项目代码:

$ rails new myapplication
$ cd /rails_apps/myapplication
$ bundle install
$ rails generate scaffold Post name:string title:string content:text
$ RAILS_ENV=production rake db:migrate

我可以访问主页,它显示正常。但是当我尝试将数据插入数据库时​​,我得到下一个:

SQLite3::ReadOnlyException: attempt to write a readonly database: INSERT INTO "posts" ("content", "created_at", "name", "title", "updated_at") VALUES (?, ?, ?, ?, ?)

我该如何解决这个问题?

更新:

chmod 777 \db

帮了我。

【问题讨论】:

  • 停止 spring 为我修复了它。

标签: sql database exception ruby-on-rails-3.1 sqlite


【解决方案1】:

对我来说仍然听起来像是特权问题。确保您运行 rails 的用户具有编辑文件的权限。例如,如果您在 phusion 下运行 rails,我认为 rails 有效用户和组是 nginx 运行的用户和组。测试它是否是权限。我将从您的 sqlite db 文件中的chmod 777 开始,看看是否有帮助。如果是的话,跟进看看是否可以更合理地设置db文件的权限和所有权给你的nginx用户。

【讨论】:

    【解决方案2】:

    导轨 2.3.5 当我尝试插入记录时,我也遇到了同样的问题,然后我遇到了同样的错误:

    问题是当我创建一个项目时,db/schema.rb 的所有者是 root。 我使用当前用户 [不是 root] 登录。 在更改文件的 ubuntu 中的所有者之后。

    先检查文件的所有者,然后更改所有者

    chown 用户名文件名

    【讨论】:

      【解决方案3】:

      更改 db 文件的所有者和权限后,我必须重新启动 rails 服务器才能正常工作。

      【讨论】:

      • 重新启动 rails 控制台和服务器为我修复了它。
      【解决方案4】:

      我知道这是一个老问题,但对于像我在搜索时一样找到它的其他人,我建议查看本杰明对这个问题的回答:

      How should I set up permission for Rails app?

      具体到上面的答案,他的第一行:“你绝对不应该使用 0777 作为你的文件权限。这更容易暴露你的漏洞。”

      我知道 Matt 只是建议将其作为调试步骤,他并没有建议将其留在生产环境中,但 OP 似乎已经采用了这种方式。

      【讨论】:

        【解决方案5】:

        从我的应用程序中删除印象派 gem 后,我在 Rails 4.1 中收到了同样的错误。

        我最终做了什么来解决这个问题:

        1. 删除与为印象派生成新表相关的 db/migration
        2. 手动更改 schema.rb 文件以删除对印象派的引用
        3. 重启服务器
        4. passenger-memory-stats 以验证应用程序已重新启动并且 apache 已获取 rackapp pid。

        在那之后一切都很好,尽管试图找出原因是一个巨大的痛苦。

        我建议您确定做的一件事是检查您的 users 并确保没有重复。

        【讨论】:

          【解决方案6】:

          如果您以管理员以外的任何人身份登录,您可以使用rvmsudo rake db:migrate,它将提示您输入管理员密码并允许您尝试迁移的访问权限。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-01
            • 2015-10-07
            • 1970-01-01
            • 1970-01-01
            • 2011-11-20
            • 2012-03-24
            相关资源
            最近更新 更多