gdfgdfg
gdfgdfg

Reputation: 3566

Error when run migrations on Heroku, PostgreSQL with Rails 5

I deploy Rails 5 with PostgreSQL to free app in Heroku. This is my configuration from database.yml:

production:
  adapter: postgresql
  username: root
  password:
  database: example

When I run heroku run rake db:migrate, I see this error:

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"?

If I add this line to database.yml:

host: localhost

and run migration again, I see this error:

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?

How to fix it ?

Upvotes: 2

Views: 4829

Answers (3)

taehyeong Kim
taehyeong Kim

Reputation: 21

After delete old DB, you should execute this

heroku pg:promote HEROKU_POSTGRESQL_NEW_DATABASE

You can check your DB nickname by

heroku pg:info

Upvotes: 1

djmayank
djmayank

Reputation: 392

Follow some steps in serial order,

  1. $ heroku login

  2. In Gemfile, add the pg gem to your Rails project. Change:

    gem sqlite

    to

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

  3. In Gemfile, add the rails_12factor gem::

    gem 'rails_12factor', group: :production

  4. $ bundle install

  5. Ensure config/database.yml is using the postgresql adapter. Change:

    production:
    <<: *default
    database: db/production.sqlite3
    to

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

  6. $ git add .
    $ git commit -m "Heroku config"
  7. $ heroku create
  8. $ git push heroku master
  9. $ heroku run rake db:migrate
    I hope it worked.

SO FOLLOW STEP 5 correctly.

Upvotes: 0

Radix
Radix

Reputation: 2747

It seems like database is not provided for your app, you need to add one:

heroku addons:create heroku-postgresql

You can verify the database was added to your application by running:

heroku config --app your_app_name

Upvotes: 21

Related Questions