我正在使用 liquibase 根据 Bert R recipe 为 quartz 设置数据库表.
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
quartz 属性文件包含作业存储的以下设置
# Job Store
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass =
org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
最佳答案
该列的数据类型应该是bytea。简单的确认方式
- 转到 http://www.quartz-scheduler.org/downloads/
- 下载你的 quartz 版本并解压
- 转到 docs/dbTables 并查找 tables_postgres.sql
在那里你会发现job_data的数据类型为bytea
现在,将数据类型修改为 bytea 后,您面临的第二个问题请查看此链接是否可以解决问题? PostgreSQL - Quartz JDBC-JobStoreTX - getTriggersForJob - ArrayIndexOutOfBoundsException
关于java - quartz ,设置 postgres 模式,JOB_DATA 应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800964/