Play Framework和DB2

Red*_*gle 8 java database db2 playframework playframework-2.0

我在Play Framework 2.0上开发了一个Web应用程序.

由于我需要访问DB2数据库,因此我在应用程序的application.conf文件中添加了以下行:

db.mydb.driver=com.ibm.db2.jcc.DB2Driver
db.mydb.url="jdbc:db2://host:port/databaseName"
db.mydb.user=user
db.mydb.password=pass
db.mydb.jndiName=databaseName
Run Code Online (Sandbox Code Playgroud)

我成功连接到此数据库但有以下例外:

[info] play - datasource [jdbc:db2://host:port/databaseName] bound to JNDI as databaseName
[info] play - database [databaseName] connected at jdbc:db2://host:port/databaseName
[warn] application - play_evolutions table already existed
[error] application -

! @6a8ib4hd7 - Internal server error, for request [GET /] ->

play.api.UnexpectedException: Unexpected exception [SqlSyntaxErrorException: DB2
 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.PLAY_EVOLUTIONS, DRI
VER=4.12.55]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anon
fun$1.apply(ApplicationProvider.scala:134) ~[play_2.9.1.jar:2.0]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anon
fun$1.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0]
        at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply
(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0]
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply
(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0]
        at scala.Either$RightProjection.flatMap(Either.scala:277) ~[scala-librar
y.jar:0.11.2]
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-2
04, SQLSTATE=42704, SQLERRMC=DB2ADMIN.PLAY_EVOLUTIONS, DRIVER=4.12.55
        at com.ibm.db2.jcc.am.hd.a(hd.java:676) ~[db2jcc4.jar:na]
        at com.ibm.db2.jcc.am.hd.a(hd.java:60) ~[db2jcc4.jar:na]
        at com.ibm.db2.jcc.am.hd.a(hd.java:127) ~[db2jcc4.jar:na]
        at com.ibm.db2.jcc.am.mn.c(mn.java:2621) ~[db2jcc4.jar:na]
        at com.ibm.db2.jcc.am.mn.d(mn.java:2609) ~[db2jcc4.jar:na]
        at com.ibm.db2.jcc.am.mn.a(mn.java:2085) ~[db2jcc4.jar:na]
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试在application.conf文件中禁用Evolutions设置以下行:

evolutions=disabled
evolutions.enable=false
Run Code Online (Sandbox Code Playgroud)

但我总是得到上述例外情况.

谁可以帮我这个事?

谢谢

Red*_*gle 7

好的...终于找到了问题的根源......

就像我说我正在使用Play Framework 2.0并且正在使用此版本的Play附带的表单教程项目......

事实证明,禁用Evolutions的命令既不是:

evolutions =禁用进化=禁用

... 反而:

evolutionplugin =禁用

谢谢


Dan*_*ruz 2

DB2 -204 SQLCODE表示:

\n\n
\n

DB2\xc2\xae 子系统中未定义名称标识的对象。可以为任何类型的 DB2 对象生成此 SQLCODE。

\n\n

...

\n\n

验证 SQL 语句中是否正确指定了对象名称,包括任何必需的限定符。如果正确,请在重新提交语句之前确保该对象存在于系统中。

\n
\n\n

看起来该表DB2ADMIN.PLAY_EVOLUTIONS不存在。如果它应该存在,请尝试使用 SQL 客户端连接到数据库并执行select * from DB2ADMIN.PLAY_EVOLUTIONS with ur for read only;以验证该表是否存在。

\n\n

另外,您可能想在文件中使用evolution=disabled而不是evolutions=disabled(请参阅 Play Git commit providing a way to disable EvolutionPlugin through configuratio\xe2\x80\xa6application.conf

\n