加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Rails:SQLite3 :: CantOpenException:无法打开数据库文件

发布时间:2020-12-12 19:08:45 所属栏目:百科 来源:网络整理
导读:我正在尝试使用delayed_job来使用Sqlite3来安排任务,看起来apache无法读取我的production.sqlite3文件. 这是我的database.yml: production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000 这是我得到的错误(在log / production.
我正在尝试使用delayed_job来使用Sqlite3来安排任务,看起来apache无法读取我的production.sqlite3文件.

这是我的database.yml:

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

这是我得到的错误(在log / production.log中):

ActiveRecord::StatementInvalid (SQLite3::CantOpenException: unable to open database file:)

我已经运行了RAILS_ENV =生产rake db:create和RAILS_ENV =生产rake db:migrate. db / production.sqlite3文件存在,db目录及其所有子文件夹归apache所有:apache,apache运行为.我在Amazon EC2上使用Phusion Passenger.

SQLLite的工作原理是让Rails进程写入Rails目录树中的系统文件. Rails进程由Apache拥有,它默认设置用户“apache”和组“apache”.要使其工作,您需要为/ db目录上的apache用户或组授予写入权限.

要么

将apache配置为与已具有该目录的写权限的组一起运行.一个好的策略是创建一组可能需要访问各个位置的各种进程 – 例如,我有一个“deployer”组,用户执行发布将与apache实例一起成为其中的一部分.我通常发现,拥有各个进程和登录用户所属的组可以使生活更轻松(例如查看服务器日志),编写上载或缓存文件等.

AND / OR

使用像PostgreSQL或MySQL这样的真实数据库服务器 – 它们可以工作,因为它们是管理自己文件的自己的进程. Rails进程(在您的情况下为apache)连接到Unix端口上的数据库服务器进程.每个服务器进程只安全地管理它知道的文件.

SQLLite很适合入门 – 超级简单且开销低,但很快您就需要在生产中运行常规数据库服务器.然后你很快就会发现SQLLite和其他东西之间的情况并不完全相同,此时你应该在dev机器上安装相同的数据库服务器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读