|
|
|
|
使用分页的查询构件,提示"DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601" 发布时间:2007-06-14 18:06:14 作者:cservice 出处: 语言:中文 阅读次数:2216次 |
| 【适用范围】
EOS5.x
【问题描述和定位】
在部署一个EOS项目时,发现如下一个棘手的情况:
某些功能中拚装的SQL,一旦使用分页的查询构件,就会提示"DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601"
经过初步分析,怀疑是分页查询时,由于要统计总行数,在原有拚装的SQL上查询行数时出错,但问题是在其他人的相同环境中没有出现这个问题。
环境说明:
数据库:db2 8.2
应用服务器:jboss
数据库连接方式:数据源模式,type4
【解决方案和步骤】
检查eosconfig.xml中关于数据库的配置,发现数据库类型与实际不匹配:
<group name="DBConnect">
<configValue key="dbType">oracle</configValue>
<configValue key="context-initial-factory">org.jnp.interfaces.NamingContextFactory</configValue>
<configValue key="dbprovider">jnp://localhost:1099</configValue>
<configValue key="defaultDataSource">java:ProductDataSource</configValue>
<configValue key="TxJNDIName">java:comp/UserTransaction</configValue>
<configValue key="single">false</configValue>
<configValue key="username">db2admin</configValue>
<configValue key="password">db2admin</configValue>
<configValue key="jdbcurl">jdbc:db2://192.168.0.108:50000/cncoa</configValue>
<configValue key="jdbcdriver">com.ibm.db2.jcc.DB2Driver</configValue>
</group>
配的是oracle类型,但是实际却连接db2,把oracle修改成db2就ok了。
EOS默认与数据库无关,实际上,在做一些大数据库量的操作,比如分页查询的时候,EOS会根据不同的数据类型做数据库查询的优化(eosconfig.xml中有个配置<configValue key="disablePagingSelect">false</configValue>,默认是false,也就是默认进行数据库优化),这样当我们用带有withPage这样的构件进行查询时,EOS会根据<configValue key="dbType">oracle</configValue>配置进行判断是是什么数据库进而产生优化的sql语句,当这里配置成oracle时就产生的是oracle的优化语句,而我们实际上是db2数据库,所以肯定就不行了,就产生错误了,所以,强烈建议大家如果能通过eosmgr进行操作的就不要手工修改!
【备注】
|
|
| 声明:本栏目转载文字、造型、样式、图形及程序如有来自网络,版权归原作者或首发媒体所有,欢迎任何个人访问或者转载,若有作者及出处有误,请来信说明,我们将及时更正。 |
|