/ / Спроба перейти від SQLite до PostgreSQL - ruby-on-rails, база даних, sqlite, postgresql, heroku

Спроба перейти від SQLite до PostgreSQL - рубіни на рейках, база даних, sqlite, postgresql, хероку

Я використовував SQLite у розробці та тестуванніPostgreSQL у виробництві на Heroku. Я хотів би замінити SQLite на PostgreSQL. Я програмую в середовищі Cloud9 (Rails 4). У мене немає даних, які я потенційно може втратити.

Що я зробив:

Спочатку я редагував database.yml:

default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
production:
<<: *default
database: app_production

Потім:

  • У Gemfile я переїхав gem "pg" від виробничого середовища тільки до всіх середовищ і видалені gem "sqlite3"
  • Я побігла bundle install.
  • Я побігла sudo service postgresql start
  • Я побігла sudo sudo -u postgres psql
  • І ввійшов create database "app_development";
  • Вступив q

Оновлення: Я додав такі додаткові кроки:

  • Я створив нового користувача в psql with CREATE USER my_username SUPERUSER PASSWORD "my_password";
  • У database.yml я додав username і password
  • У database.yml я додав host: myurl.c9.io
  • Я ввів у psql: GRANT ALL ON DATABASE app_development to my_username

Біг sudo sudo -u postgres psql і потім list виробляє:

      Name          |  Owner   | Encoding  | Collate | Ctype |   Access privileges
postgres           | postgres | SQL_ASCII | C       | C     |
template0          | postgres | SQL_ASCII | C       | C     | =c/postgres          +
|          |           |         |       | postgres=CTc/postgres
template1          | postgres | SQL_ASCII | C       | C     | =c/postgres          +
|          |           |         |       | postgres=CTc/postgres
app_development    | postgres | SQL_ASCII | C       | C     |

Я не бачу тут свого імені користувача як власника app_development ...

Помилка: Біг rake db:migrate тайм-аут із зазначенням PG::ConnectionBad: could not connect to server: Connection timed out Is the server running on host "myurl.c9.io" (ip address) and accepting TCP/IP connections on port 5432?.

Чому зв'язок з PostgreSQL може бути невдалим?

Відповіді:

1 для відповіді № 1

Замінити вміст файлу database.yml на:

default: &default
adapter: postgresql
host: localhost
username: yourusername
password: yourpassword
timeout: 5000
port: 5432
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
production:
<<: *default
database: app_production

Тому що ви використовуєте Heroku, то ви можете залишити виробничу секцію як є