簡體   English   中英

ActiveRecord :: ConnectionNotEstablished - 沒有X的連接池

[英]ActiveRecord::ConnectionNotEstablished - No connection pool for X

我無法按照需要在heroku上托管我的sinatra / ruby​​應用程序。 我擺弄了一些試圖解決這個問題的設置,但到目前為止還沒有結果。

ActiveRecord::ConnectionNotEstablished - No connection pool for User:
2015-06-25T14:26:11.736854+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:566:in `retrieve_connection'
2015-06-25T14:26:11.736856+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
2015-06-25T14:26:11.736858+00:00 app[web.1]:    /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:87:in `connection'

用戶是我的ActiveRecords表之一,應用程序失敗,因為我嘗試查詢它。

我使用sinatra與puma備份。 這是我的Procfile:

web: ruby app/my-server.rb -s puma

我還在檢查有多少打開的連接使用:

select count(*) from pg_stat_activity where pid <> pg_backend_pid()  and usename = current_user; 

但它每次都說0。

我正在主持應用程序的免費計划和開發計划的herokupostgres。

我還注意到,在短時間內有2次快速調用api時會出現問題。 就像只有1個,而不是5個連接可用,因為第一次呼叫成功,第二次呼叫失敗。 在我的database.yml中,我將池設置為5。

我在Rails 4.2.1和Postgres 9.4上

這是我的database.yml以及:

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  timeout: 5000

production:
  <<: *default
  host: my_db_address
  port: 5432
  database: my_db_name
  username: my_db_user_name
  password: my_db_password

< test and development ommited >

我是否會錯過一些配置或免費的heroku計划窒息?

請檢查您的sinatra應用程序如何建立連接

configure :production, :development do
  db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/mydb')
  pool = ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5
  ActiveRecord::Base.establish_connection(
        adapter:  db.scheme == 'postgres' ? 'postgresql' : db.scheme,
        host:      db.host,
        username:  db.user,
        password:  db.password,
        database:  db.path[1..-1],
        encoding:  'utf8',
        pool:      pool
  )
end

確保您對池有適當的設置,同時確保您有DB_POOLMAX_THREADS的heroku配置。

heroku config:set DB_POOL=5

要么

heroku config:set MAX_THREADS=5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM