2012-08-13 12 views
10

Obserwuję Play 2,0 tutorial do ScalaZagraj 2.0 scala samouczek - Heroku powodu braku ewolucji

wszystko działa dobrze, dopóki próbuję naciskać i uruchomić go na Heroku. po uruchomieniu "git push heroku master" serwer ulega awarii. Sprawdzając logi, widzę:

Starting process with command `target/start -Dhttp.port=37849 -Xmx384m -Xss512k -XX:+UseCompressedOops` 
2012-08-13T06:52:45+00:00 app[web.1]: Play server process ID is 2 
2012-08-13T06:52:46+00:00 app[web.1]: [info] play - database [default] connected at jdbc:h2:mem:play 
2012-08-13T06:52:46+00:00 app[web.1]: [warn] play - Your production database [default] needs evolutions! 
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: CREATE SEQUENCE task_id_seq; 
2012-08-13T06:52:46+00:00 app[web.1]: label varchar(255) 
2012-08-13T06:52:46+00:00 app[web.1]: CREATE TABLE task (
2012-08-13T06:52:46+00:00 app[web.1]: id integer NOT NULL DEFAULT nextval('task_id_seq'), 
2012-08-13T06:52:46+00:00 app[web.1]:); 
2012-08-13T06:52:46+00:00 app[web.1]: 
2012-08-13T06:52:46+00:00 app[web.1]: # --- Rev:1,Ups - c5e3eee 
2012-08-13T06:52:46+00:00 app[web.1]: [warn] play - Run with -DapplyEvolutions.default=true if you want to run them automatically (be careful) 
2012-08-13T06:52:46+00:00 app[web.1]: Oops, cannot start the server. 
2012-08-13T06:52:46+00:00 app[web.1]: PlayException: Database 'default' needs evolution! [An SQL script need to be run on your database.] 
2012-08-13T06:52:46+00:00 app[web.1]: at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:422) 

Jakieś myśli?

Odpowiedz

-6

Potrzebujesz bazy danych. Są darmowe dodatki w Heroku

+0

miałem zależności dla PostgreSQL w moim pliku Build.scala i określony w moim Procfile. Jednak odkryłem problem - miałem literówkę w moim Procfile i to nie było ładowanie poprawnie. Zdecydowanie pomyłka debiutanta! – user1594608

+0

Problem jest spowodowany przez skrypt ewolucyjny, który musi zostać wykonany. Ustawienie skryptu ewolucyjnego do wykonania automatycznie rozwiązuje ten problem. –

16

Albo jeśli używasz DB osadzenia lub PostgreSQL, Play nie posiada wsparcia stosowania ewolucję ręcznie ...

Ale, jak powiedział w komunikacie o błędzie, można aktywować klucz konfiguracyjny w pliku application.conf: applyEvolutions.default=true

Włączanie powie Play auto ly stosować wszystkie ewolucje!

Ale uważaj na swoje skrypty aktualizacji ... jeśli upuścisz i odtworzysz każdą wersję przyrostową => zabijesz wszystkie swoje dane!

+0

Jaki jest prawidłowy sposób korzystania z ewolucji przy aktualizacji naszej aplikacji? –

+1

Moim najlepszym przypuszczeniem jest, że upewnij się, że twój przyrostowy przyrost jest ochronny. Na przykład, nie usuwaj, ale aktualizuj, dodaj lub dostosuj wartości. Dzięki dobrym testom IT będziesz mógł automatycznie stosować ewolucję bez obaw –

3

Alternatywą do rozwiązania Andy mogłoby być dodanie następujących do Heroku procfile

web: target/start -Dhttp.port=${PORT} -DapplyEvolutions.default=true 
    -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL 

($ PORT i $ DATABASE_URL będą wypełniane przez zmienne środowiskowe na stronie Heroku)

Powiązane problemy