2012-08-13 10 views
10

estoy siguiendo el juego 2.0 tutorial de Scala2,0 Scala tutorial - heroku fracasar debido a la evolución

Todo funciona bien hasta que intento de empujar y ejecutarlo en Heroku. después de ejecutar "git push heroku master", el servidor falla. Comprobando los registros, veo lo siguiente:

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) 

¿Alguna idea?

Respuesta

-6

Necesita una base de datos. Hay complementos libres en heroku

+0

Yo tenía las dependencias para PostgreSQL en mi archivo Build.scala y especificado en mi Procfile. Sin embargo, sí descubrí el problema: tenía un error tipográfico en mi archivo Proc y no se cargaba correctamente. Definitivamente un error de novato! – user1594608

+0

el problema es causado por un script de evolución que debe ejecutarse. Configurar el script de evolución para que se ejecute automáticamente corrige esto. –

16

Tanto si se utiliza la base de datos de inserción o PostgreSQL, Juego no tiene un soporte para aplicar la evolución por la mano ...

Pero, como se dijo en el mensaje de error, puede activar una clave de configuración en el archivo application.conf: applyEvolutions.default=true

Activación le dirá Juego de auto Ly se aplican todas las evoluciones!

Pero tenga en cuenta sus scripts de actualización ... si suelta y recrea cada versión incremental => ¡matará todos sus datos!

+0

¿Cuál es la forma correcta de usar evoluciones al actualizar nuestra aplicación? –

+1

Mi mejor opción es asegurar que su sal incremental sea protectora ... por ejemplo, no elimine pero actualice para agregar o adaptar los valores. Con buenas pruebas de TI, podrás aplicar evoluciones automáticamente sin ningún temor –

3

Una alternativa a la solución de Andy podría añadir lo siguiente a la heroku procfile

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

($ PORT y $ DATABASE_URL estarán poblados por las variables de entorno en el lado Heroku)

Cuestiones relacionadas