2012-08-13 9 views
10

Sto seguendo Play 2.0 tutorial per ScalaGioca 2.0 scala esercitazione - Heroku non riuscendo a causa dell'evoluzione

Tutto funziona bene fino a quando provo a spingere ed eseguirlo sul Heroku. dopo aver eseguito "git push heroku master", il server si blocca. Controllando i registri, vedo quanto segue:

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) 

Qualche idea?

risposta

-6

Hai bisogno di un database. Ci sono addons gratuiti a Heroku

+0

Ho avuto le dipendenze per PostgreSQL nel mio file Build.scala e specificato nel mio Procfile. Tuttavia, ho scoperto il problema - Ho avuto un errore di battitura nel mio Procfile e non si caricava correttamente. Sicuramente un errore da principiante! – user1594608

+0

il problema è causato da uno script di evoluzione che deve essere eseguito. L'impostazione dello script di evoluzione da eseguire risolve automaticamente questo. –

16

O se si utilizza il DB embed o PostgreSQL, Play non ha un supporto da applicare evoluzione a mano ...

Ma, come detto nel messaggio di errore, può attivare una chiave di configurazione nel file application.conf: applyEvolutions.default=true

Abilitazione dirà Play per auto LY si applicano tutte le evoluzioni!

Ma fai attenzione agli script di aggiornamento ... se si rilascia e ricrea ogni versione incrementale => ucciderai tutti i tuoi dati!

+0

Qual è il modo corretto di utilizzare le evoluzioni durante l'aggiornamento della nostra applicazione? –

+1

La mia ipotesi migliore è che assicuri che il tuo sal incrementale sia protettivo .. per esempio non elimina ma aggiorna per aggiungere o adattare i valori. Con buoni test IT, sarete in grado di applicare automaticamente le evoluzioni senza alcun timore –

3

Un'alternativa alla soluzione di Andy potrebbe essere l'aggiunta di quanto segue alla Heroku procfile

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

($ PORT e $ DATABASE_URL saranno popolate da variabili d'ambiente sul lato Heroku)

Problemi correlati