【问题标题】:Heroku - Rails 6 - multi-databaseHeroku - Rails 6 - 多数据库
【发布时间】:2019-08-03 04:19:42
【问题描述】:

导轨:gem "rails", "6.0.0.rc2"

我有多个数据库。没有一个是副本(我正在阅读和写作所有 3 个): 在 rails 6 之前,我使用了 multiverse gem,一切看起来都很好。我遵循 rails 6 并将 multiverse 更改为 rails 6 docs。但是我无法在 Heroku 中运行 db:migrate,尽管一切都在本地完美运行。

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :primary
end

.

class ObsRecord < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :obs
end

.

class AbcRecord < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :abc
end

数据库.yml

staging:
  primary:
    <<: *default
    adapter: postgresql
    url:  <%= ENV['DATABASE_URL'] %>
    username: <%= ENV['DATABASE_USER'] %>
    password: <%= ENV['DATABASE_PASSWORD'] %>
  obs:
    <<: *default
    adapter: postgresql
    url: <%= ENV['OBS_DATABASE_URL'] %>
    username: <%= ENV['OBS_DATABASE_USER'] %>
    password: <%= ENV['OBS_DATABASE_PASSWORD'] %>
    migrations_paths: db/obs_migrate
  abc:
    <<: *default
    adapter: postgresql
    url: <%= ENV['ABC_DATABASE_URL'] %>
    username: <%= ENV['ABC_DATABASE_USER'] %>
    password: <%= ENV['ABC_DATABASE_PASSWORD'] %>
    migrations_paths: db/abc_migrate

rails db:migrate 什么也没有显示,好像没有迁移但是当我运行rails c 时,我看到以下错误。是的,我确信最新的代码被推送了。

heroku restart 没有帮助

Heroku 错误:

Traceback (most recent call last):
    102: from /app/bin/rails:4:in `<main>'
    101: from /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.0.rc2/lib/active_support/dependencies.rb:322:in `require'
.
.
4: from /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc2/lib/active_record/connection_handling.rb:50:in `establish_connection'
      3: from /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc2/lib/active_record/connection_handling.rb:180:in `resolve_config_for_connection'
      2: from /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc2/lib/active_record/connection_adapters/connection_specification.rb:140:in `resolve'
      1: from /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc2/lib/active_record/connection_adapters/connection_specification.rb:219:in `resolve_connection'.
.

/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc2/lib/active_record/connection_adapters/connection_specification.rb:251:in `resolve_symbol_connection': The `abc` database is not configured for the `staging` environment. (ActiveRecord::AdapterNotSpecified)

Available databases configurations are:

default
prod_uat_default
development
test
staging
uat
production

^^ 我期待小学、abc 和 obs 正在暂存。

另外,rails -T 没有显示关于我的第二个和第三个数据库的任何内容

【问题讨论】:

    标签: ruby-on-rails heroku activerecord ruby-on-rails-6


    【解决方案1】:

    使用了 6.0-stable 版本并且可以正常工作: gem "rails", github: "rails/rails", branch: "6-0-stable"

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 2016-01-26
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多