/ / Intentando cambiar de SQLite a PostgreSQL - ruby-on-rails, database, sqlite, postgresql, heroku

Intentando cambiar de SQLite a PostgreSQL - ruby-on-rails, database, sqlite, postgresql, heroku

Estaba usando SQLite en desarrollo y prueba, yPostgreSQL en producción en Heroku. Me gustaría reemplazar SQLite con PostgreSQL. Estoy programando en el entorno Cloud9 (Rails 4). No tengo datos que potencialmente pueda perder.

Que hice

Primero, edité el 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

Entonces:

  • En el Gemfile me moví gem "pg" Del entorno de producción solo a todos los entornos y eliminado. gem "sqlite3"
  • corrí bundle install.
  • corrí sudo service postgresql start
  • corrí sudo sudo -u postgres psql
  • Y entró create database "app_development";
  • Ingresó q

Actualizar: Agregué los siguientes pasos adicionales:

  • He creado un nuevo usuario en psql con CREATE USER my_username SUPERUSER PASSWORD "my_password";
  • En database.yml he añadido el username y password
  • En database.yml he añadido host: myurl.c9.io
  • Entré en psql: GRANT ALL ON DATABASE app_development to my_username

Corriendo sudo sudo -u postgres psql y entonces list produce:

      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     |

No veo mi nombre de usuario aquí como propietario de app_development ...

Error: Corriendo rake db:migrate tiempos fuera, indicando 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?.

¿Por qué podría estar fallando la conexión con el PostgreSQL?

Respuestas

1 para la respuesta № 1

Reemplace el contenido del archivo database.yml a:

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

Como usas Heroku, puedes dejar la sección de producción como está