2011-08-07 14 views
5

Mam aplikację internetową, która korzysta z SQLite. Wdrażam go na heroku, który wykorzystuje PostgreSLQ. To czasami powoduje problemy i zalecono mi opracowanie aplikacji przy użyciu PostgreSQL zamiast SQLite.ROR zmiana bazy danych aplikacji z SQLite na PostgreSQL

I okazało się, że należy zmodyfikować database.yml takiego (tak samo dla badań i produkcji):

development: 
    adapter: postgresql 
    database: my_database 
    username: my_username 
    password: my_passwod 
    host: /var/run/postgresql or localhost 

Dobrze tylko baza danych, jaki kiedykolwiek używane jest SQLite, więc po prostu starał się zaryzykować, ale zawiodło. Wypełniłem ten plik pewnymi losowymi danymi.

rake db:migrate następująco:

Kiedy użyłem host: localhost

> could not connect to server: Connection refused Is the server running 
> on host "localhost" and accepting TCP/IP connections on port 5432? 

Kiedy host: /var/run/postgresql

> could not connect to server: No such file or directory 
> Is the server running locally and accepting connections on Unix domain socket 
> "/var/run/postgresql/.s.PGSQL.5432"? 

Chyba powinienem zacząć serwer PostgreSQL pierwszy, ale nie mam pojęcia jak to zrobić. Proszę mi powiedzieć krok po kroku, jak przejść z aplikacji SQLite do działającej aplikacji PostgreSQL.

+0

Oto samouczek na temat toczenia z Ruby on Rails i Postgres: http://vandenabeele.com/Rails-on-Ubuntu-Jaunty. A oto głębszy krok po kroku dla Postgres: http://www.yolinux.com/TUTORIALS/LinuxTutorialPostgreSQL.html. – atrain

+0

możliwy duplikat http://stackoverflow.com/questions/6710654/how-do-you-sasily-change-from-sqlite-to-postgresql-in-rails –

Odpowiedz

2

Chciałbym poinformować, że należy pobrać Postgresql, w tym sam PGADMIN, który jest łatwiejszy w użyciu niż terminal psql.

I myślę, że po pobraniu/zainstalowaniu PostgreSQL z ich oficjalnej strony internetowej ... pakiet był już gotowy.

Po zainstalowaniu, Postgresql poprosi Cię o podanie hasła, które będzie używane podczas uzyskiwania dostępu do serwera PostgreSQL.

Po zakończeniu instalacji otwórz PGADMIN i połącz się z serwerem. Wprowadź swoje hasło (które zadeklarowałeś podczas instalacji).

Jeśli nie możesz połączyć się z serwerem, edytuj port. Aby to zrobić, kliknij prawym przyciskiem myszy serwer, a następnie przejdź do właściwości ... edytuj port w coś, co jest bezpłatne. Przykład: 5433 i tak dalej. To zależy od Ciebie.

Jeśli wszystko działa ... w końcu poprawnej konfiguracji config dla database.yml

Jest to ważne:

development: 
    adapter: postgresql 
    database: name_of_database_here 
    host: localhost 
    username: postgres 
    password: your_db_server_password_here 
    pool: 5 
    timeout: 5000 
    port: 5433 

porządku z tym informacji config powyżej, określenie ważnych części. Domyślnie nazwa użytkownika serwera db to postgres i oczywiście hostem jest localhost, ponieważ konfigurujesz w ramach rozwoju.

Jeśli twój port ma domyślnie 5432, po prostu usuń część portu.

Chodźmy do twojego gemfile.

Aby wdrożyć aplikację w heroku. Użyj gem 'pg' zamiast sqlite3.

Jeśli masz istniejącą bazę danych sqlite3, umieść klejnot w grupie programistów. W takim przypadku Heroku z powodzeniem będzie pakowane podczas procesu git push heroku master.

group :development do 
     gem 'sqlite3' 
end 

Twój gem 'pg' można albo wyjść na zewnątrz grup lub umieścić go w grupie produkcyjnej.

Ważne:

Przed wszczęciem postępowania rozmieszczania, upewnij się, że można uruchomić aplikację lokalnie (localhost). Więc jeśli wszystko działa ... to jest czas, w którym należy odpowiednio zorganizować niezbędne rzeczy.

Jeśli chcesz przełączyć się na Postgresql zamiast sqlite3 po przesłaniu aplikacji do Heroku ... możesz to zrobić za pomocą dodatku pgbackups i pg_restore pliku zrzutu na lokalny serwer bazy danych Postgresql.

To wszystko. Mam nadzieję, że to pomoże.

Powiązane problemy