关于ruby:使用Rails 5在Heroku,PostgreSQL上运行迁移时出错

Error when run migrations on Heroku, PostgreSQL with Rails 5

我使用PostgreSQL将Rails 5部署到Heroku中的免费应用程序。 这是我从database.yml的配置:

1
2
3
4
5
production:
  adapter: postgresql
  username: root
  password:
  database: example

当我运行heroku run rake db:migrate时,我看到了这个错误:

rake aborted!
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"?

如果我将此行添加到database.yml

1
host: localhost

并再次运行迁移,我看到这个错误:

rake aborted!
PG::ConnectionBad: could not connect to server: Connection refused
Is the server running on host"localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

怎么解决?


似乎没有为您的应用提供数据库,您需要添加一个:

1
heroku addons:create heroku-postgresql

您可以通过运行以下命令验证数据库已添加到您的应用程序

1
heroku config --app your_app_name

按顺序执行一些步骤,

  • $ heroku login

  • 在Gemfile中,将pg gem添加到Rails项目中。 更改:

    gem sqlite

    gem 'sqlite3', group: :development
    gem 'pg', '0.18.1', group: :production

  • 在Gemfile中,添加rails_12factor gem ::

    gem 'rails_12factor', group: :production

  • $ bundle install

  • 确保config / database.yml正在使用postgresql适配器。 更改:

    <5233>
    <<: *default
    database: db/production.sqlite3

    <5233>
    <<: *default
    adapter: postgresql
    database: db/production.sqlite3

  • $ git add .
    $ git commit -m"Heroku config"
  • $ heroku create
  • $ git push heroku master
  • $ heroku run rake db:migrate

    我希望它有效。

  • 所以正确地遵循第5步。


    删除旧数据库后,您应该执行此操作

    1
    heroku pg:promote HEROKU_POSTGRESQL_NEW_DATABASE

    您可以检查您的数据库昵称

    1
    heroku pg:info