【问题标题】:ActiveRecord connection requires reset?ActiveRecord 连接需要重置?
【发布时间】:2020-01-27 12:02:24
【问题描述】:

生产模式下的应用程序正在按预期返回内容。假设它正在连接到配置的数据库。 database.yml文件如下

default: &default
  adapter: postgresql
  user: deploy
  password: 888xxx888xxx
  schema_search_path: public
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5
  timeout: 10000

development:
  <<: *default
  database: fort_development

  <<: *default
  database: fort_test

production:
  <<: *default
  database: fort_production

但是,当通过控制台连接到数据库时,无论是在开发中(数据库不存在)还是在生产中,控制台都连接到错误的数据库。它还引用了从 database.yml 文件中删除的用户名(应用程序随后重新启动)。

注意:曾经在 yml 文件中为 schema_search_path 属性引用了字符串 myapp,但它是一个注释掉的行(不确定它是否曾经被激活。'

> bundle exec rails c
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}
> bundle exec rails c production
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}

控制台和应用程序不同步。什么可以使控制台使用不同的值以及如何重置它以使用正确的配置数据?

【问题讨论】:

    标签: ruby-on-rails postgresql console


    【解决方案1】:

    对于遇到此问题的任何人,rake 可以在另一个地方获取通过 ActiveRecord 连接的指令。

    .rbenv-vars
    

    应用程序目录中的这个文件被错误地设置为:

    DATABASE_URL=postgresql://deploy:PASSWORD@127.0.0.1/myapp
    

    另一个潜在的问题来源(不清楚为什么文件在 yaml 中正确解析)是使 database.yml 文件仅引用生产环境

    production:
      adapter: postgresql
      database: fort_production
      password: [...]
      pool: 5
      schema_search_path: public
      timeout: 10000
      user: deploy
    

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多