Jeśli wysyłasz do Heroku 1.sql
plik wygenerowany dla H2
, istnieje duża szansa, że będą kolidować, zamiast tego ustaw adres URL Heroku w application.conf
jako db.default.url
i uruchom go najpierw w trybie deweloperskim na hoście lokalnym, aby wygenerować poprawny kod Postres SQL. Będziesz także musiał skomentować db.default.user
i db.default.password
ustawienia, ponieważ adres URL Heroku zawiera już te informacje.
Jeśli nie znasz adresu URL bieżącego połączenia, znajdziesz go pod adresem:
https://postgres.heroku.com/ -> YourDBs
-> nazwa bazy danych -> Connection settings
-> JDBC URL
Aby połączyć się z hosta lokalnego (lub innej maszyny, nie znajdującej się w przestrzeni Heroku) musisz dodać ten parametr do adresu URL:
&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
Dzięki takiemu podejściu możesz przetestować swoją aplikację lokalnie z nawiązanym połączeniem ze zdalną bazą danych Heroku (nie zdziw się - ta kombinacja będzie znacznie wolniejsza niż praca z local app + local DB
lub Heroku app + Heroku DB
) w każdym razie do testowania jest to lepsze niż wielokrotne wypychanie małych poprawek do chmury.
Będziesz także mógł wykonywać ewolucje z lokalnego hosta - bez wypychania kodu do Heroku, a jest to naprawdę krótsze podejście, jeśli masz problemy z SQL.
Dodatkowo jest to dobra okazja, aby włączyć logowanie SQL w trybie lokalnego dewelopera i polować na nadmiarowe zapytania SQL, jeśli usuniesz wszystkie niepotrzebne zapytania i będziesz zadowolony na localhoście, po wdrożeniu na Heroku będziesz po prostu znacznie bardziej zadowolony:)
Resetuj
Jeśli utworzysz właściwy 1.sql
niż prawdopodobnie będziesz musiał zresetować bazę danych zawierającą nieprawidłową strukturę (zakładam, że to jeszcze nie problem, ponieważ po prostu przenosisz się z lokalnego do Heroku). Najpierw znajdź nazwę bazy danych dla bieżącej aplikacji (z bash, w folderze aplikacji):
heroku pg
A następnie zresetuj go za pomocą (spowoduje to zniszczenie wszystkich danych, więc najpierw rozważ utworzenie kopii zapasowej, jeśli nie chcesz stracić danych!):
heroku pg:reset HEROKU_DATABASE_SOMEBASE