Používal som SQLite vo vývoji a testovaní aPostgreSQL v produkcii na Heroku. Chcel by som nahradiť SQLite s PostgreSQL. Programujem v prostredí Cloud9 (Rails 4). Nemám žiadne údaje, ktoré by som mohol potenciálne stratiť.
Čo som spravil:
Najprv som upravil databázu.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
production:
<<: *default
database: app_production
potom:
- V Gemfile som sa presťahoval
gem "pg"
z výrobného prostredia len do všetkých prostredí a odstránenégem "sqlite3"
- Bežal som
bundle install
. - Bežal som
sudo service postgresql start
- Bežal som
sudo sudo -u postgres psql
- A vstúpil
create database "app_development";
- vstúpil
q
aktualizácia: Pridal som nasledujúce dodatočné kroky:
- Vytvoril som nového používateľa v
CREATE USER my_username SUPERUSER PASSWORD "my_password";
- V databáze. Som pridala
username
apassword
- V databaze.yml som pridala
host: myurl.c9.io
- Zadal som v psql:
GRANT ALL ON DATABASE app_development to my_username
beh sudo sudo -u postgres psql
a potom list
vyrába:
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 |
Nevidím tu svoje používateľské meno ako vlastník aplikácie app_development ...
Chyba: beh rake db:migrate
časové oneskorenie, vyhlásenie 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?
.
Prečo môže byť spojenie s PostgreSQL neúspešné?
odpovede:
1 pre odpoveď č. 1Nahradiť obsah súboru database.yml do:
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
Pretože používate Heroku, môžete nechať sekciu výroby tak, ako je