6

Herokuにいくつかの進化をプッシュしてみました:

2012-08-30T10:58:00+00:00 heroku[slugc]: Slug compilation finished
2012-08-30T10:58:02+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=32436 -Xmx384m -Xss512k
 -XX:+UseCompressedOops`
2012-08-30T10:58:03+00:00 app[web.1]: Play server process ID is 2
2012-08-30T10:58:05+00:00 app[web.1]: [←[37minfo←[0m] play - database [default] connected at [Database-address]
2012-08-30T10:58:05+00:00 app[web.1]: CREATE TABLE `unapprovedteaminfo` (
---
Copy of 1.sql
---
2012-08-30T10:58:05+00:00 app[web.1]: VALUES (1, 2, 2, '2012-01-01 00:00:00', 'k');
2012-08-30T10:58:05+00:00 app[web.1]: ERROR: syntax error at or near "`"
2012-08-30T10:58:05+00:00 app[web.1]:   Position: 14 [ERROR:0, SQLSTATE:42601]
2012-08-30T10:58:05+00:00 app[web.1]: Oops, cannot start the server.
2012-08-30T10:58:05+00:00 app[web.1]: PlayException: Database 'default' is in inconsistent state! [An evolution has not
been applied properly. Please check the problem and resolve it manually before marking it as resolved.]
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.Evolutions$.checkEvolutionsState(Evolutions.scala:155)

2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.Evolutions$.databaseEvolutions(Evolutions.scala:308)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.Evolutions$.evolutionScript(Evolutions.scala:284)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.s
cala:412)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.s
cala:410)
2012-08-30T10:58:05+00:00 app[web.1]:   at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59
)
2012-08-30T10:58:05+00:00 app[web.1]:   at scala.collection.immutable.List.foreach(List.scala:45)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.db.evolutions.EvolutionsPlugin.onStart(Evolutions.scala:410)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.Play$$anonfun$start$1.apply(Play.scala:60)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.Play$$anonfun$start$1.apply(Play.scala:60)
2012-08-30T10:58:05+00:00 app[web.1]:   at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59
)
2012-08-30T10:58:05+00:00 app[web.1]:   at scala.collection.immutable.List.foreach(List.scala:45)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.api.Play$.start(Play.scala:60)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.StaticApplication.<init>(ApplicationProvider.scala:51)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.server.NettyServer$.createServer(NettyServer.scala:132)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:153)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:152)
2012-08-30T10:58:05+00:00 app[web.1]:   at scala.Option.map(Option.scala:133)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.server.NettyServer$.main(NettyServer.scala:152)
2012-08-30T10:58:05+00:00 app[web.1]:   at play.core.server.NettyServer.main(NettyServer.scala)
2012-08-30T10:58:06+00:00 heroku[web.1]: Process exited with status 255
2012-08-30T10:58:06+00:00 heroku[web.1]: State changed from starting to crashed

これらの進化はH2で問題なく機能しますが、POSTGRESQL構文にはいくつかの問題があるはずです。とにかく、私が今抱えている問題は、1.sqlを変更してHerokuに新しいバージョンをプッシュしても、同じエラーがログに表示されることです-コピーされた1.sqlは新しいプッシュされたバージョンに従って変更されません。

4

2 に答える 2

22

1.sqlに対して生成されたHerokuファイルに送信する場合 H2、競合する可能性が高くなります。代わりに、HerokuのURLをapplication.confasに設定​​し、db.default.url最初にローカルホストで開発モードで実行して、有効なPostresSQLを生成します。また、HerokuのURLにはすでにこの情報が含まれているため、db.default.userと設定をコメントアウトする必要があります。db.default.password

現在の接続のURLがわからない場合は、次の場所にあります。

https://postgres.heroku.com/- > YourDBs-> db-name- > Connection settings->JDBC URL

ローカルホスト(またはHerokuのスペースではない他のマシン)から接続するには、次のパラメーターをURLに追加する必要があります。

&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

このアプローチのおかげで、リモートのHerokuのDBへの接続を確立して、アプリケーションをローカルでテストできます(驚かないでください。この組み合わせは、local app + local DBまたはでHeroku app + Heroku DBの作業よりもはるかに遅くなります)とにかく、小さな修正をクラウドに繰り返しプッシュするよりも優れています。 。

また、コードをHerokuにプッシュすることなく、ローカルホストからの進化を実行できるようになります。SQLに問題がある場合は、これは非常に短いアプローチです。

さらに、ローカル開発モードでSQLロギングをオンにして、冗長なSQLクエリを探す良い機会です。不要なクエリをすべて削除し、ローカルホストで満足する場合は、Herokuにデプロイした後、はるかに満足します。 )。

リセット

適切な1.sqlファイルを作成する場合は、おそらく無効な構造を含むDBをリセットする必要があります(ローカルからHerokuに移動するだけなので、まだ問題はないと思います)。まず、現在のアプリのDBの名前を見つけます(アプリのフォルダーでbashを使用)。

heroku pg

次に、でリセットします(すべてのデータが破壊されるため、データを失いたくない場合は、最初にバックアップを検討してください!):

heroku pg:reset HEROKU_DATABASE_SOMEBASE
于 2012-08-30T12:25:48.607 に答える
0

データ時間フィールドを使用したVALUESの定義に問題があると思います。play 2.4、Slick 3.0.3、postgresの動作するevolutions構成セットアップを投稿しました。Evolutionフォルダーに配置された*.sqlファイルが自動的に生成されました。

プレイ2で進化スクリプトを再生成する

乾杯

于 2015-10-30T14:44:18.293 に答える