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中选择两个日期之间的所有数据