为什么我无法连接到数据库?

时间:2019-04-29 15:10:49

标签: heroku ruby-on-rails-5

运行heroku run rails db:migrate时出现错误:

PG::ConnectionBad: could not connect to server: No such file or directory
  Is the server running locally and accepting
  connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/app/vendor/bundle/ruby/2.6.0/gems/pg-1.1.4/lib/pg.rb:56:in `initialize'
/app/vendor/bundle/ruby/2.6.0/gems/pg-1.1.4/lib/pg.rb:56:in `new'
/app/vendor/bundle/ruby/2.6.0/gems/pg-1.1.4/lib/pg.rb:56:in `connect'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:692:in `connect'

我已经安装了pg gem。这是我的配置:

# database.yml
production:
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000
  database: bigbig-fishfish_production
  username: bigbig-fishfish
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

我正在做的任何事情显然是错误的吗?为什么会出现错误?

1 个答案:

答案 0 :(得分:0)

您没有提供host,因此Rails试图连接到本地运行的Postgres。您的数据库服务器将不在Heroku上的localhost上。另外,您的数据库名称和用户名看起来也不正确。您不会自己选择这些值。

假设您正在使用Heroku's own Postgres service,则应该使用DATABASE_URL environment variable连接到Postgres。由于您使用的是Rails 5,因此您可能应该omit the database, username, and password values completely。确保您有DATABASE_URL(如果您使用的是Heroku Postgres,则应该开箱即用),Rails应该自动使用它。