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 removidogem "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
epassword
- 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 № 1Substitua 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 é