gpt4 book ai didi

ruby-on-rails - ActiveRecord::ConnectionNotEstablished - X 没有连接池

转载 作者:行者123 更新时间:2023-11-29 11:11:21 24 4
gpt4 key购买 nike

我无法让托管在 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 backup 一起使用。这是我的 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

关于ruby-on-rails - ActiveRecord::ConnectionNotEstablished - X 没有连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31053336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com