在 JBoss 中的石英中值太大



我在服务器日志中收到以下错误。我想知道哪个查询(插入或更新)对石英表的列进行更改。

 ERROR [org.quartz.impl.jdbcjobstore.JobStoreTX] MisfireHandler: Error
 handling misfires: Couldn't store trigger: ORA-01438: value larger
 than specified precision allowed for this column
 org.quartz.JobPersistenceException: Couldn't store trigger: ORA-01438:
 value larger than specified precision allowed for this column  [See
 nested exception: org.quartz.JobPersistenceException: Couldn't store
 trigger: ORA-01438: value larger than specified precision allowed for
 this column  [See nested exception: java.sql.SQLException: ORA-01438:
 value larger than specified precision allowed for this column ]]   at
 org.quartz.impl.jdbcjobstore.JobStoreTX.doRecoverMisfires(JobStoreTX.java:1354)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:2449)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:2468)
 * Nested Exception (Underlying Cause) --------------- org.quartz.JobPersistenceException: Couldn't store trigger: ORA-01438:
 value larger than specified precision allowed for this column  [See
 nested exception: java.sql.SQLException: ORA-01438: value larger than
 specified precision allowed for this column ]  at
 org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:964)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:780)
    at
 org.quartz.impl.jdbcjobstore.JobStoreTX.doRecoverMisfires(JobStoreTX.java:1352)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:2449)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:2468)
 * Nested Exception (Underlying Cause) --------------- java.sql.SQLException: ORA-01438: value larger than specified
 precision allowed for this column
    at
 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)    at
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)  at
 oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)     at
 oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
    at
 oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
    at
 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    at
 oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
    at
 oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368)
    at
 org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)
    at
 org.quartz.impl.jdbcjobstore.StdJDBCDelegate.updateSimpleTrigger(StdJDBCDelegate.java:1440)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:942)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:780)
    at
 org.quartz.impl.jdbcjobstore.JobStoreTX.doRecoverMisfires(JobStoreTX.java:1352)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:2449)
    at
 org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:2468)

你能请任何人帮忙吗?是否有任何配置参数可以查看日志中的插入/更新查询?

我看到此错误是由于SIMPLE_TRIGGERS表中的TIMES_TRIGGERED列变得太大而无法存储在该列中,该列通常定义为 NUMBER(7)(即.max值为 9999999)。

通常,您可以将此列设置为 0,错误就会消失(直到TIMES_TRIGGERED再次变得足够大)。 似乎石英会查看触发器的开始时间和配置的频率,并确定值应该是多少并覆盖您的更新,尽管根据我的经验,它已将其设置为远低于最大值。

有关更多详细信息,请参阅无法存储触发器。

最新更新