Quartz,设置postgres架构,JOB_DATA应该是什么?

时间:2017-10-18 00:08:20

标签: java postgresql quartz-scheduler

我正在使用liquibase根据Bert R recipe设置石英数据库表。

postgres的JOB_DATA列的正确类型是什么?

原始错误是

Caused by: org.quartz.JobPersistenceException: Couldn't retrieve trigger: 2
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1538)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
at org.postgresql.util.PGbytea.toBytes(PGbytea.java:76)

基本错误发生在PostgreSQlDelegate.java中,试图从qrtz_triggers表中读取JOB_DATA列。这个列的确只有\ x。

我更改了上面的liquibase文件,以便在我收到错误时将类型从BLOB更改为BYTEA

column "job_data" is of type oid but expression is of type bytea

石英属性文件包括作业存储的以下设置

# Job Store
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = 
org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

1 个答案:

答案 0 :(得分:2)

列的数据类型应为 bytea 。简单的确认方法

  1. 转到http://www.quartz-scheduler.org/downloads/
  2. 下载您的石英版本并将其解压缩
  3. 转到docs / dbTables并查找tables_postgres.sql
  4. 在那里,您会发现job_data的数据类型为 bytea

    现在,在将数据类型修改为 bytea 后面临的第二个问题,请查看此链接以查看它是否解决了问题? PostgreSQL - Quartz JDBC-JobStoreTX - getTriggersForJob - ArrayIndexOutOfBoundsException