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)
但我总是得到上述例外情况.
谁可以帮我这个事?
谢谢
好的...终于找到了问题的根源......
就像我说我正在使用Play Framework 2.0并且正在使用此版本的Play附带的表单教程项目......
事实证明,禁用Evolutions的命令既不是:
evolutions =禁用进化=禁用
... 反而:
evolutionplugin =禁用
谢谢
DB2 -204 SQLCODE表示:
\n\n\n\n\nDB2\xc2\xae 子系统中未定义名称标识的对象。可以为任何类型的 DB2 对象生成此 SQLCODE。
\n\n...
\n\n验证 SQL 语句中是否正确指定了对象名称,包括任何必需的限定符。如果正确,请在重新提交语句之前确保该对象存在于系统中。
\n
看起来该表DB2ADMIN.PLAY_EVOLUTIONS不存在。如果它应该存在,请尝试使用 SQL 客户端连接到数据库并执行select * from DB2ADMIN.PLAY_EVOLUTIONS with ur for read only;以验证该表是否存在。
另外,您可能想在文件中使用evolution=disabled而不是evolutions=disabled(请参阅 Play Git commit providing a way to disable EvolutionPlugin through configuratio\xe2\x80\xa6)application.conf。