【问题标题】:ActiveRecord attempting to connect to the wrong database using rbenvActiveRecord 尝试使用 rbenv 连接到错误的数据库
【发布时间】:2016-07-07 16:21:42
【问题描述】:

在站点根目录执行 get 请求时,/log/production.log 出现错误:

I, [2016-03-21T02:21:38.485274 #12750]  INFO -- :
    Started GET "/" for 174.xx.xxx.xxx at 2016-03-21 02:21:38 -0600
F, [2016-03-21T02:21:38.493250 #12750] FATAL -- :
    ActiveRecord::NoDatabaseError (FATAL:  database "y" does not exist)

上面写着database "y" does not exist。首先,y 不是数据库,所以我知道它不存在。

其次,database.ymlydb 指定为应用程序应连接的数据库 - 而不是 y

config/database.yml:

production:
  adapter: postgresql
  encoding: utf8
  host: <%= ENV['Y_PG_HOST'] %>
  database: <%= ENV['Y_PG_DB'] %>
  username: <%= ENV['Y_PG_USER'] %>
  password: <%= ENV['Y_PG_PASS'] %>

使用 rbenv 声明环境变量:

.rbenv-vars

  Y_PG_HOST=localhost
  Y_PG_DB=ydb
  Y_PG_USER=y
  Y_PG_PASS=*********

更新

感谢@Meshpi,看来rbenv 是问题所在。当环境变量直接放在database.yml 中时,服务器会按预期加载站点。

令人费解的是,从echo $Y_PG_DB开始,shell返回的是ydb,而不是y

【问题讨论】:

  • 你是如何运行服务器的?如果您先使用export $(cat .rbenv-vars | xargs) 导出变量,它是否有效?
  • k,试过了,并没有改变错误信息。另外,我正在使用Passenger + Nginx。此外,我还没有对 postgresql.confpg_hba.conf 文件做任何事情——我在安装时保持不变。
  • 您是否尝试通过直接在 database.yml 而不是环境变量中设置值来排除 rbenv 作为罪魁祸首?
  • @Meshpi 好吧,我会很生气的。你是对的,问题似乎在于rbenv。我将 envars 直接放在 database.yml 中,现在它按预期工作
  • @singularity 至少我们知道去哪里找。我想知道为什么它读取 rbenv 用户名变量的值作为数据库名称。

标签: ruby-on-rails postgresql activerecord passenger rbenv


【解决方案1】:

开发工作良好。即使服务器上的rails console productionapp.get '/' 一起工作,也没有数据库错误。但是,当通过浏览器发出请求时,一切都崩溃了。

问题是 Phusion Passenger 在安装结束时给出的指令与 rbenv-vars 不完全兼容。

在Passenger 安装结束时,系统会指示您将以下内容添加到nginx.conf

passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26;
passenger_ruby /home/user/.rbenv/versions/2.3.0/bin/ruby;

但是,作为@mislav pointed out,Ruby 脚本将直接启动 ruby​​ 进程,而不是通过 rbenv。

要解决这个问题,nginx.conf 中需要的是:

passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26;
passenger_ruby /home/user/.rbenv/shims/ruby;

希望这有助于拯救另一个毫无戒心的灵魂:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2015-06-20
    • 1970-01-01
    • 2011-10-06
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多