/ / Tentando mudar do SQLite para o PostgreSQL - ruby-on-rails, banco de dados, sqlite, postgresql, heroku

Tentando mudar do SQLite para o PostgreSQL - ruby-on-rails, banco de dados, sqlite, postgresql, heroku

Eu estava usando o SQLite em desenvolvimento e teste, ePostgreSQL em produção no Heroku. Eu gostaria de substituir o SQLite pelo PostgreSQL. Estou programando no ambiente Cloud9 (Rails 4). Não tenho dados que eu possa perder.

O que eu fiz:

Primeiro, editei o 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

Então:

  • No Gemfile eu mudei gem "pg" do ambiente de produção apenas para todos os ambientes e removido gem "sqlite3"
  • Irã bundle install.
  • Irã sudo service postgresql start
  • Irã sudo sudo -u postgres psql
  • E entrou create database "app_development";
  • Entrou q

Atualizar: Eu adicionei as seguintes etapas adicionais:

  • Eu criei um novo usuário no psql com CREATE USER my_username SUPERUSER PASSWORD "my_password";
  • No database.yml eu adicionei o username e password
  • No database.yml eu adicionei host: myurl.c9.io
  • Eu entrei no psql: GRANT ALL ON DATABASE app_development to my_username

Corrida sudo sudo -u postgres psql e depois list produz:

      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     |

Não vejo meu nome de usuário aqui como proprietário do app_development ...

Erro: Corrida rake db:migrate vezes fora, afirmando 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 que a conexão com o PostgreSQL pode falhar?

Respostas:

1 para resposta № 1

Substitua o conteúdo do arquivo database.yml para:

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

Porque você usa Heroku então você pode deixar a seção de produção como é