我最近又重构了一次以前写的代码。 重构期间临时将MySQL jar包从5.0.4更新为5.1.16。 启动项目后,发生了一些异常。
首先,在插入数据时获取主键时抛出异常。 org.spring framework.JDBC.uncategorized sqlexception : preparedstatementcallback; uncategorizedsqlexceptionforsql [ ]; SQL state [S1009]; 错误代码[0]; generatedkeysnotrequested.youneedtospecifystatement.return _ generated _ keystostatement.execute update (nestedexcexceptiotion dkeysnotrequested.youneedtospecifystatement.return _ generated _ _ (SQL.sqlexception 3360
解决方法:
preparedstatementps=con.preparestatement (SQL ); 修改为
preparedstatementps=con.preparestatement (SQL,statement.return _ generated _ keys );
keyholderkeyholder=newgeneratedkeyholder (;
JDBC template.update (newpreparedstatementcreator (}
@Override
publicpreparedstatementcreatepreparedstatement (connection con ) throws SQLException {
preparedstatementps=con.preparestatement (SQL,statement.return _ generated _ keys );
返回PS;
}
(,keyHolder );
接下来,在同一表中进行连接查询时抛出找不到列的异常。
nestedinorg.spring framework.JDBC.invalidresultsetaccessexception 3360列名无效; nestedexceptionisjava.SQL.sqlexception :列名无效: Java.SQL.sqlexception :列名无效
此查询的sql语句是select t1.a、t1.b、t1.c、t1.d、t1.e、t2.a x、t2.b y、t2.c z、fromtable_aT1leftjointable_a
sqlrowsetsrs=JDBC template.queryforrowset (SQL;
if(SRS.next ) ) }
.
SRS.getint(x );
.
}
运行SRS.getint('x ) )代码时抛出了上述异常。 实际上,在所有t2列中发生了列名无效的错误。 此问题尚未解决,但将jar恢复到以前的5.0.4版将一切正常。
这次,我吸取了不得已的情况下,不要轻易升级项目环境,无论如何要升级,必须重新测试项目中升级的相关功能模块的经验。
共享到:
2011-06-24 21:18
阅览5951
评论