问题现象:
使用xxl-job-admin适配pg数据库的时候,点击启动任务,虽然提示启动成功,但是状态不正常,查看后台,果然报错:
Caused by: org.postgresql.util.PSQLException: 不良的类型值 long : \x
at org.postgresql.jdbc.PgResultSet.toLong(PgResultSet.java:3160)
at org.postgresql.jdbc.PgResultSet.getLong(PgResultSet.java:2343)
at org.postgresql.jdbc.PgResultSet.getBlob(PgResultSet.java:452)
at org.postgresql.jdbc.PgResultSet.getBlob(PgResultSet.java:438)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.getObjectFromBlob(StdJDBCDelegate.java:3190)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:1780)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1536)
... 63 common frames omitted
调试的过程中发现是从结果集取大对象数据类型的字段值时出现的问题,pg数据库使用的是bytea类型。
解决方法:
找到Quartz的配置文件,添加以下内容,问题即可解决:
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate