我正在尝试将我的rails应用程序部署到heroku。该应用已上传但由于某种原因无法正常运行。当我输入
heroku run rake db:migrate
我收到错误说
ActiveRecord :: ConnectionTimeoutError:无法在5.000秒内获得数据库连接(等待5.000秒)
我正在使用puma服务器,我会发布一些可能导致问题的文件...请询问可能导致此错误的任何内容!
配置/ database.ymi
production:
adapter: postgresql
host: localhost
encoding: unicode
database: FastOrder_production
pool: 5
username: <%= ENV['FASTORDER_DATABASE_USER'] %>
password: <%= ENV['FASTORDER_DATABASE_PASSWORD'] %>
template: template0
url: <%= ENV["DATABASE_URL"] %>
pool: ENV['RAILS_MAX_THREADS']
配置/ puma.rb
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
答案 0 :(得分:0)
使用
production:
pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %>
现在,您可以通过在Heroku上设置配置变量来设置连接池大小。例如,如果您想将其设置为10,则可以运行:
$ heroku config:set DB_POOL=10
这并不意味着每个dyno现在都有10个开放连接,但只有在需要新连接时才会创建它,直到每个Rails进程最多使用10个连接。
答案 1 :(得分:0)
您应首先创建数据库:
heroku run rake db:create
另外,请检查此Heroku doc有关数据库连接的信息:https://devcenter.heroku.com/articles/concurrency-and-database-connections