playframework-1.x heroku postgres

Posted

技术标签:

【中文标题】playframework-1.x heroku postgres【英文标题】: 【发布时间】:2012-07-02 21:32:03 【问题描述】:

我刚刚尝试将 play 1.2.4 应用程序部署到 heroku。 该应用程序在本地运行良好,但在 heroku 上,我刚尝试保存一些数据时就遇到了一些奇怪的错误。

2012-07-02T21:26:04+00:00 app[web.1]:请求 POST /players/save 的内部服务器错误 (500)
2012-07-02T21:26:04+00:00 应用程序[web.1]:
2012-07-02T21:26:04+00:00 应用程序 [web.1]:糟糕:UnexpectedException
2012-07-02T21:26:04+00:00 app[web.1]:由异常引起的意外错误 UnexpectedException:意外错误
2012-07-02T21:26:04+00:00 应用程序[web.1]:
2012-07-02T21:26:04+00:00 app[web.1]: play.exceptions.UnexpectedException: 意外错误
2012-07-02T21:26:04+00:00 app[web.1]: at play.data.validation.ValidationPlugin.beforeActionInvocation(ValidationPlugin.java:59)
2012-07-02T21:26:04+00:00 app[web.1]: at play.plugins.PluginCollection.beforeActionInvocation(PluginCollection.java:594)
2012-07-02T21:26:04+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:134)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 Invocation.HTTP 请求(播放!)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:原因:play.exceptions.UnexpectedException:意外错误
2012-07-02T21:26:04+00:00 app[web.1]: at play.db.jpa.JPAPlugin.bind(JPAPlugin.java:84)
2012-07-02T21:26:04+00:00 app[web.1]: at play.plugins.PluginCollection.bind(PluginCollection.java:534)
2012-07-02T21:26:04+00:00 app[web.1]: at play.data.binding.Binder.bind(Binder.java:111)
2012-07-02T21:26:04+00:00 app[web.1]: at play.mvc.ActionInvoker.getActionMethodArgs(ActionInvoker.java:642)
2012-07-02T21:26:04+00:00 app[web.1]: at play.data.validation.ValidationPlugin$Validator.validateAction(ValidationPlugin.java:96)
2012-07-02T21:26:04+00:00 app[web.1]: at play.data.validation.ValidationPlugin.beforeActionInvocation(ValidationPlugin.java:51)
2012-07-02T21:26:04+00:00 应用 [web.1]: ... 还有 3 个
2012-07-02T21:26:04+00:00 app[web.1]: 引起: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: 无法执行查询
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:307)
2012-07-02T21:26:04+00:00 app[web.1]: at play.db.jpa.JPAPlugin.bind(JPAPlugin.java:79)
2012-07-02T21:26:04+00:00 应用 [web.1]: ... 还有 8 个
2012-07-02T21:26:04+00:00 应用程序 [web.1]:原因:org.hibernate.exception.SQLGrammarException:无法执行查询
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.loader.Loader.doList(Loader.java:2536)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.loader.Loader.list(Loader.java:2271)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
2012-07-02T21:26:04+00:00 app[web.1]: at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
2012-07-02T21:26:04+00:00 app[web.1]: at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:274)
2012-07-02T21:26:04+00:00 应用 [web.1]: ... 还有 9 个
2012-07-02T21:26:04+00:00 app[web.1]: 由: org.postgresql.util.PSQLException: 错误: 运算符不存在: bigint = bytea
2012-07-02T21:26:04+00:00 app[web.1]:提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
2012-07-02T21:26:04+00:00 应用 [web.1]:位置:130
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
2012-07-02T21:26:04+00:00 app[web.1]: at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
2012-07-02T21:26:04+00:00 app[web.1]: at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
2012-07-02T21:26:04+00:00 应用程序 [web.1]: 在 org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.loader.Loader.doQuery(Loader.java:802)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
2012-07-02T21:26:04+00:00 应用程序 [web.1]:在 org.hibernate.loader.Loader.doList(Loader.java:2533)
2012-07-02T21:26:04+00:00 应用 [web.1]: ... 17 更多

该应用程序可在此处公开访问: https://github.com/phaus/kickster

我也尝试先使用 db evolutions。它也没有工作。 我找到了几页

原因:org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = bytea

但我看起来,问题出在 Play 框架内?

【问题讨论】:

【参考方案1】:

这是 Play 1.2.5 中修复的 Play 框架错误。

【讨论】:

我用过:> heroku addons:add heroku-postgresql:dev 来激活新的dev DB,但是报错还是一样。 您是否删除了shared-database 插件并将开发数据库升级为DATABASE_URL 我从 postgres.heroku.com/databases 提升了数据库中的 url - 仍然是同样的错误。有趣的是,Play! heroku 开发博客的模板工作得很好。我仔细检查了 application.conf 中的设置,它看起来一样。那么,更复杂的模型可能存在一些问题?我将在本周末再次测试本地 postsql 设置。 好的。仔细检查heroku config DATABASE_URL 是否设置为新的 Postgres URL。 还是同样的错误。 Heroku 配置给了我 imotep:kickster philipp$ heroku config === simple-cloud-8060 DATABASE_URL 的配置变量: postgres://XXXXXXXX:XXXXXXXXX@ec2-23-23-234-207.compute-1.amazonaws.com: 5432/ddej30ahhs8qab HEROKU_POSTGRESQL_PINK_URL: postgres://XXXXXXXX:XXXXXXXXX@ec2-23-23-234-207.compute-1.amazonaws.com:5432/ddej30ahhs8qab JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops 路径:.play .tools:/usr/local/bin:/usr/bin:/bin PLAY_OPTS: --%prod -Dprecompiled=true

以上是关于playframework-1.x heroku postgres的主要内容,如果未能解决你的问题,请参考以下文章

playframework 1.x 是不是处理跨站点脚本 (xss)?

是否建议启动 Playframework 1.x 应用程序?

带有经典查询分隔符的 PlayFramework 1.x 路由

Postgresql:在playframework 1.x中选择两个日期之间的所有数据

Playframework 1.x 静态方法如何以线程安全的方式工作

Heroku:如何查看 Heroku 错误日志?