6

我是 Quartz 调度程序的新手,我正在将它与 spring 一起使用......当我尝试运行包含 Quartz 配置的 XML 文件时,我得到一个异常说明:

Failure obtaining db row lock: No row exists in table QRTZ_LOCKS for lock named: 
TRIGGER_ACCESS 

我发现表 QRTZ_LOCKS 包含两个字段:SCHED_NAME 和 LOCK_NAME,我应该在我的数据库中运行以下语句:

INSERT INTO QRTZ_LOCKS values('my sched_name', 'TRIGGER_ACCESS'); 
INSERT INTO QRTZ_LOCKS values('my sched_name','JOB_ACCESS'); 
INSERT INTO QRTZ_LOCKS values('my sched_name','CALENDAR_ACCESS'); 
INSERT INTO QRTZ_LOCKS values('my sched_name','STATE_ACCESS'); 
INSERT INTO QRTZ_LOCKS values('my sched_name','MISFIRE_ACCESS');  

但我不知道我的 sched_name 是什么?

任何想法 ??

4

4 回答 4

6

你只需要运行

      INSERT INTO QRTZ_LOCKS values('TRIGGER_ACCESS');
      INSERT INTO QRTZ_LOCKS values('JOB_ACCESS');
      INSERT INTO QRTZ_LOCKS values('CALENDAR_ACCESS');
      INSERT INTO QRTZ_LOCKS values('STATE_ACCESS');
      INSERT INTO QRTZ_LOCKS values('MISFIRE_ACCESS');

这实际上对我有用。至少停止了错误。

于 2012-11-13T15:47:40.950 回答
2

这很可能是因为您从较新版本的 Quartz 获得了表格脚本,然后您将其应用于您的应用程序。

如果你使用的是 Spring,那么你必须有 Quartz 1.8.x。

在这里您可以找到版本 1.8.6

注意:在该 tar.gz 文件中还有另一个没有扩展名的文件。它是一个 zip 文件,其中包含一个名为 doc 的文件夹。在那里你可以找到几个数据库引擎的脚本。

不需要对数据进行手动修改。

于 2012-11-19T18:08:13.947 回答
1

*my_sched_name* 可以从表qrtz_job_details(sched_name) 中检索。您的石英配置/部署一定有问题,因为通常您不必手动插入/更新这些表。

于 2012-11-12T09:03:30.403 回答
0

通常,当您的数据库中没有与石英相关的数据库表时,您会收到这些错误。

有时即使您有 db 表,您也可能会在迁移中遇到这些错误。请检查石英 1.8 和 quart 2.x 的 db_schema 有一些变化。

下面是 2.x db 脚本的链接,这应该可以正常工作。

2.x:https ://github.com/elventear/quartz-scheduler/blob/master/distribution/src/main/assembly/root/docs/dbTables/tables_mysql.sql

你也可以检查这个: https ://github.com/quartznet/quartznet/blob/master/database/tables/tables_oracle.sql

于 2019-07-12T05:17:37.307 回答