欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

org.springframework.jdbc.UncategorizedSQLException: ### Error querying database. sqldb2java 

程序员文章站 2024-03-23 11:05:58
...
今天在开发的时候遇到一个问题,有个业务状态需要配置数据字典,字典的值value为0,1,2,3...等,可是当我配置好之后,在添加的时候代码如下
 <form:select path="status">
        <form:option value="" label=""/>
        <form:options items="${fns:getDictList('BUS_STATUS')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
                        </form:select>

使用spring的form标签,但是代码改好之后,却无法从数据库中将字典转换为真实的值。一开始我还怀疑是代码的问题,后来经过仔细检查之后发现代码没有问题。于是我通过打断点来查找问题,
后来发现从数据库中查到的键的值是'1 ',大家仔细看,'1 '占了两个字节,说明一下,我用的数据库是db2,可视化工具是DbVisualizer Pro 9.1.8,通过查看数据库发现业务状态这个字段类型是char2,于是我通过sql语句:
alter table tablename alter column  columnname set data type varchar(2);
将业务状态这个字段的类型改为varchar。
由于是修改字段的问题,数据库报了-668这个错误,于是我用reorg table tablename解决了这个问题。
当我以为就这样就大功告成的时候,在查询的时候却报了这个错误:

org.springframework.jdbc.UncategorizedSQLException: ### Error querying database. Cause: com.ibm.db2.jcc.am.SqlException: [jcc][t4][2093][11302][4.7.85] 由于服务器上发生错误而使得查询处理已终止。 ERRORCODE=-4228, SQLSTATE=null ### The error may exist in file [/data/apache-tomcat-7.0.57/webapps/mmc/WEB-INF/classes/META-INF/mybatis/mappings/db2/loan/WH_MICRO_CREDIT.xml] ### The error may involve cn.com.yitong.modules.loan.dao.WhMicroCreditDao.queryByCriteria ### The error occurred while handling results ### SQL: select * from ( select rownumber() over(order by CREATE_DTIME DESC) as rownumber_, SERIAL_NO,STATUS,BOR_IDNO,BOR_NAME,BOR_PHONE, GUA_IDNO,GUA_NAME,GUA_PHONE,APPLY_AMOUNT,TERM_TYPE, APPLY_TERM,RATE_YEAR,RATE_FLOAT_TYPE,RATE_FLOAT_PROP,EXCT_RATE_YEAR, EXCT_RATE_MONTH,OVERDUE_PENALTY_RADIO,OVERDUE_RATE_MONTH,TRANSUSE_RATE_MONTH,TRANSUSE_PENALTY_RADIO, RATE_ADJUST_MODEL,RATE_ADJUST_METHOD,REPAYMENT_METHOD,PAY_RATE_METHOD,PAY_RATE_DATE, LOAN_TARGET,AGR_TYPE,LOAN_USEAGE,PAYMENT_METHOD,TURNOVER, FAMILY_INCOME,ACCOUNT_REC,STOCK,PURCHASE_COST,STAFF_EXPENSE, OTHER_EXPENSE,FAMILY_EXPEND,ACCOUNT_PAYABLE,INITIAL_CAPITAL,BANK_LOAN, LONGTERM_LIAB,REMARK,CUST_SIGN,CREATE_DTIME,CUST_MANAGER, EXT_FIELD1,EXT_FIELD2,EXT_FIELD3,GUA_TYPE from ARESV3.WH_MICRO_CREDIT WHERE CREATE_DTIME >= ? and CREATE_DTIME <= ? order by CREATE_DTIME DESC ) as temp_ where rownumber_ <= 10 ### Cause: com.ibm.db2.jcc.am.SqlException: [jcc][t4][2093][11302][4.7.85] 由于服务器上发生错误而使得查询处理已终止。 ERRORCODE=-4228, SQLSTATE=null ; uncategorized SQLException for SQL []; SQL state [null]; error code [-4228]; [jcc][t4][2093][11302][4.7.85] 由于服务器上发生错误而使得查询处理已终止。 ERRORCODE=-4228, SQLSTATE=null; nested exception is com.ibm.db2.jcc.am.SqlException: [jcc][t4][2093][11302][4.7.85] 由于服务器上发生错误而使得查询处理已终止。 ERRORCODE=-4228, SQLSTATE=null

我重启了服务之后这个问题就没有了。
,我通过打断点发现从数据库中传进来的值依然是'1 ',依然占了两个字节,于是我将数据库原来的所有业务状态的值重新赋值,再查询就可以了。
我的解决方法可能与大家的不一样,仅供大家参考,作为新手有问题希望大家指出。


相关标签: sql db2 java