Проблемы с обновлением Playframework 2.1 и Heroku

Я создал проект Play Framework 2.1.0 и развернул его на Heroku. В прошлую пятницу мне пришлось изменить модели данных, чтобы добавить дополнительные поля. Как только я попытался развернуть изменения, это дало мне ошибки эволюции.

Не удалось исправить проблему, я отменил измененную и развернул старую версию, но все равно получаю ошибку.

Текущая ошибка, которую я получаю это

 database [default] connected at jdbc:postgresql: ...
 Position: 27 [ERROR:0, SQLSTATE:42601]
 ERROR: syntax error at or near "FALSE"
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$apply$1.apply$mcV$sp(Evolutions.scala:435)
Oops, cannot start the server.
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:434)
at play.api.db.evolutions.Evolutions$.evolutionScript(Evolutions.scala:306)
at scala.collection.immutable.List.foreach(List.scala:309)
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63)
at play.api.Play$.start(Play.scala:62)
at play.api.db.evolutions.EvolutionsPlugin.onStart(Evolutions.scala:432)
@6ele4bdao: Database 'default' is in inconsistent state!
....

Для развертывания я использую следующее с помощью этой строки procfile:

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

Кроме того, как я предположил, я использовал heroku pg:psql вместе с SELECT id, last_problem FROM play_evolutions; чтобы узнать ошибку и говорит syntax error at or near "FALSE" но я не вижу ложных в моем файле 1.sql.

Любой может помочь мне с этим, это сводит меня с ума.

1 ответ

Решение

Есть 2 варианта:

  • Ваш скрипт развития неверен, вы должны проверить его на локальной базе данных postgresql в вашей среде разработки

  • Вы упоминаете, что уже делали развертывание раньше. Это означает, что эволюция уже началась. Но вы также упоминаете, что вы проверяете ошибки внутри 1.sql, Если вы уже запускаете эволюции один раз, Play будет ожидать появления новых скриптов 2.sql, Это может быть причиной того, что вы получаете исключение.

Другое решение - отключить эволюции (установить evolutionplugin=disabled в application.conf) и внесите изменения вручную, подключившись к базе данных postgresql через клиента. Это может означать дополнительную работу, но это, вероятно, более безопасная альтернатива, чтобы не оставлять базу данных в нестабильном состоянии. Иногда контроль лучше, чем автоматизация.

Другие вопросы по тегам