2012-08-13 9 views
10

Ich folge dem Play 2.0 tutorial für Scala2.0 scala Tutorial Spielen - Heroku wegen Fehler der Evolution

Alles funktioniert gut, bis ich versuche, es auf Heroku zu schieben und laufen. Nach dem Ausführen von "git push heroku master" stürzt der Server ab. Überprüfen Sie die Protokolle, ich sehe folgendes:

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) 

Irgendwelche Gedanken?

Antwort

-6

Sie benötigen eine Datenbank. Es gibt kostenlose Addons in Heroku

+0

ich die Abhängigkeiten Hatte für PostgreSQL in meiner Build.scala-Datei und in meiner Procfile angegeben. Allerdings habe ich das Problem entdeckt - ich hatte einen Tippfehler in meinem Procfile und es wurde nicht richtig geladen. Definitiv ein Anfängerfehler! – user1594608

+0

Das Problem wird durch ein Evolutionsskript verursacht, das ausgeführt werden muss. Das Festlegen des Evolutionsscripts zur automatischen Ausführung behebt dies. –

16

Entweder, wenn Sie den Einbettungs DB oder die PostgreSQL verwenden, Spielen keinen Support Evolution von Hand anzuwenden ...

Aber, wie in der Fehlermeldung heißt, Sie können aktivieren, um einen Konfigurationsschlüssel in der application.conf Datei: erzählen applyEvolutions.default=true

aktivieren zum automatischen Wiedergabe ly alle Entwicklungen gelten!

Aber passen Sie auf Ihre Update-Skripte auf ... wenn Sie jede inkrementelle Version löschen und neu erstellen => Sie werden alle Ihre Daten töten!

+0

Was ist der richtige Weg, Entwicklungen bei der Aktualisierung unserer Anwendung zu verwenden? –

+1

Meine beste Vermutung ist, dass Ihre inkrementelle Sal zu schützen. Zum Beispiel kein Löschen, sondern aktualisieren Sie die Werte hinzufügen oder anpassen. Mit guten IT-Tests können Sie Entwicklungen ohne Angst automatisch anwenden –

3

Eine Alternative zu Andys Lösung könnte die folgende auf die Heroku procfile

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

($ PORT und $ DATABASE_URL von Umgebungsvariablen auf der Heroku Seite bevölkert werden) werden, indem