运行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'] %>
我正在做的任何事情显然是错误的吗?为什么会出现错误?
答案 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应该自动使用它。