运行quartz在MS SQL是出现异常,异常代码如下: org . quartz . JobPersistenceException : Couldn 't acquire next trigger: Couldn' t retrieve trigger : [ Microsoft ] [ SQLServer 2000 Driver for JDBC ] ResultSet can not re - read row data for co
运行quartz在MS SQL是出现异常,异常代码如下:
<span><span>org</span><span>.</span>quartz<span>.</span>JobPersistenceException<span>:</span> Couldn<span>'t acquire next trigger: Couldn'</span>t retrieve trigger<span>:</span> <span>[</span>Microsoft<span>]</span><span>[</span>SQLServer 2000 <span>Driver</span> <span>for</span> JDBC<span>]</span><span>ResultSet</span> can <span>not</span> re<span>-</span><span>read</span> row data <span>for</span> column 9<span>.</span> <span>[</span>See nested <span>exception</span><span>:</span> <span>org</span><span>.</span>quartz<span>.</span>JobPersistenceException<span>:</span> Couldn<span>'t retrieve trigger: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 9. [See nested exception: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 9.]]<br> at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2741)<br> at org.quartz.impl.jdbcjobstore.JobStoreSupport$35.execute(JobStoreSupport.java:2699)<br> at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3711)<br> at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2695)<br> at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266)<br>Caused by: org.quartz.JobPersistenceException: Couldn'</span>t retrieve trigger<span>:</span> <span>[</span>Microsoft<span>]</span><span>[</span>SQLServer 2000 <span>Driver</span> <span>for</span> JDBC<span>]</span><span>ResultSet</span> can <span>not</span> re<span>-</span><span>read</span> row data <span>for</span> column 9<span>.</span> <span>[</span>See nested <span>exception</span><span>:</span> <span>java</span><span>.</span><span>sql</span><span>.</span><span>SQLException</span><span>:</span> <span>[</span>Microsoft<span>]</span><span>[</span>SQLServer 2000 <span>Driver</span> <span>for</span> JDBC<span>]</span><span>ResultSet</span> can <span>not</span> re<span>-</span><span>read</span> row data <span>for</span> column 9<span>.</span><span>]</span><br> at <span>org</span><span>.</span>quartz<span>.</span>impl<span>.</span>jdbcjobstore<span>.</span>JobStoreSupport<span>.</span>retrieveTrigger<span>(</span>JobStoreSupport<span>.</span><span>java</span><span>:</span>1549<span>)</span><br> at <span>org</span><span>.</span>quartz<span>.</span>impl<span>.</span>jdbcjobstore<span>.</span>JobStoreSupport<span>.</span>retrieveTrigger<span>(</span>JobStoreSupport<span>.</span><span>java</span><span>:</span>1525<span>)</span><br> at <span>org</span><span>.</span>quartz<span>.</span>impl<span>.</span>jdbcjobstore<span>.</span>JobStoreSupport<span>.</span>acquireNextTrigger<span>(</span>JobStoreSupport<span>.</span><span>java</span><span>:</span>2728<span>)</span><br> <span>.</span><span>.</span><span>.</span> 4 more<br>Caused by<span>:</span> <span>java</span><span>.</span><span>sql</span><span>.</span><span>SQLException</span><span>:</span> <span>[</span>Microsoft<span>]</span><span>[</span>SQLServer 2000 <span>Driver</span> <span>for</span> JDBC<span>]</span><span>ResultSet</span> can <span>not</span> re<span>-</span><span>read</span> row data <span>for</span> column 9<span>.</span><br> at com<span>.</span>microsoft<span>.</span>jdbc<span>.</span>base<span>.</span>BaseExceptions<span>.</span>createException<span>(</span><span>Unknown</span> <span>Source</span><span>)</span><br> at com<span>.</span>microsoft<span>.</span>jdbc<span>.</span>base<span>.</span>BaseExceptions<span>.</span><span>getException</span><span>(</span><span>Unknown</span> <span>Source</span><span>)</span><br> at com<span>.</span>microsoft<span>.</span>jdbc<span>.</span>base<span>.</span>BaseResultSet<span>.</span>validateColumnIndex<span>(</span><span>Unknown</span> <span>Source</span><span>)</span><br> at com<span>.</span>microsoft<span>.</span>jdbc<span>.</span>base<span>.</span>BaseResultSet<span>.</span><span>getInt</span><span>(</span><span>Unknown</span> <span>Source</span><span>)</span><br> at com<span>.</span>microsoft<span>.</span>jdbc<span>.</span>base<span>.</span>BaseResultSet<span>.</span><span>getInt</span><span>(</span><span>Unknown</span> <span>Source</span><span>)</span><br> at <span>org</span><span>.</span>apache<span>.</span>commons<span>.</span>dbcp<span>.</span>DelegatingResultSet<span>.</span><span>getInt</span><span>(</span>DelegatingResultSet<span>.</span><span>java</span><span>:</span>236<span>)</span><br> at <span>org</span><span>.</span>quartz<span>.</span>impl<span>.</span>jdbcjobstore<span>.</span>StdJDBCDelegate<span>.</span>selectTrigger<span>(</span>StdJDBCDelegate<span>.</span><span>java</span><span>:</span>2129<span>)</span><br> at <span>org</span><span>.</span>quartz<span>.</span>impl<span>.</span>jdbcjobstore<span>.</span>JobStoreSupport<span>.</span>retrieveTrigger<span>(</span>JobStoreSupport<span>.</span><span>java</span><span>:</span>1531<span>)</span><br> <span>.</span><span>.</span><span>.</span> 6 more</span>
|
分析:使用SQLServer 数据库时,可能发生此异常,原因是微软自己的jdbc驱动不支持同一个记录的字段的重复读取,因为微软加入了text,image这种类型的支持,就限制了字段的回读功能.原因是如果该表存在TEXT, NTEXT, IMAGE等大型字段,对于ResultSet的字段读取必须按照从左向右读,如果你用:
int a = rs.getInt(2);
int b = rs.getInt(1);
则报错。Microsoft给出的方案是不能从右往左也不能连续读2次。
解决方法:这个是微软JDBC驱动的一个bug,我们也可以不用他的驱动,自己到网上下载jtds.jar驱动,使用这种驱动就不会出现上面的异常了.
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn