Hen*_*son 6 postgresql heroku playframework playframework-2.0
我尝试将一些进化推向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
Run Code Online (Sandbox Code Playgroud)
这些演变对H2来说效果很好,我想POSTGRESQL语法肯定会有一些问题.无论如何,我现在遇到的问题是,即使我更改1.sql并在Heroku上推送新版本,同样的错误也会显示在日志中 - 复制的1.sql不会根据新推送的版本而改变.
bie*_*ior 22
如果您要发送1.sql生成的Heroku 文件H2,则很可能会发生冲突,而是将Heroku的url设置application.conf为as db.default.url并在localhost上以dev模式运行它以生成有效的Postres SQL.此外,您还需要注释掉db.default.user和db.default.password设置,因为Heroku的URL已包含此信息.
如果您不知道当前连接的URL,您将在以下位置找到它:
https://postgres.heroku.com/ - > YourDBs- > db-name - > Connection settings- >JDBC URL
要从localhost(或其他计算机,而不是Heroku的空间)进行连接,您需要将此参数添加到URL:
&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
Run Code Online (Sandbox Code Playgroud)
由于这种方法,你可以建立连接到远程Heroku的DB本地测试您的应用程序,(请不要感到惊讶-该组合会比工作更慢local app + local DB或Heroku app + Heroku DB)反正用于测试它比反复推一些小的修改,以云计算更好.
此外,您还可以从localhost执行演进 - 无需将代码推送到Heroku,如果您的SQL出现问题,这种方法确实更短.
此外,在本地开发模式下打开SQL日志记录并寻找冗余SQL查询的好时机,如果您将删除所有不必要的查询并在localhost上满足,在部署到Heroku之后,您将更加满意: )
如果您要创建正确的1.sql文件,那么您可能需要重置包含无效结构的数据库(因为我认为这不是问题,因为您只是从本地移动到Heroku).首先找到当前应用程序的DB名称(使用bash,在app的文件夹中):
heroku pg
Run Code Online (Sandbox Code Playgroud)
然后重置它(它将破坏所有数据,因此如果您不想丢失数据,请先考虑备份!):
heroku pg:reset HEROKU_DATABASE_SOMEBASE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3832 次 |
| 最近记录: |