我正在尝试在表中运行 JOb 队列,在该表中我看到有多少作业正在运行和排队。如果没有作业正在运行,那么我将该作业状态更新为正在运行。我运行分析并将状态更新为“完成”
def qjobs = Inputparams.createCriteria()
def qresult = qjobs.list {
eq("status", "queued")
}
def qjobs2 = Inputparams.createCriteria()
def rjobs = qjobs2.list {
eq("status", "running")
}
并更新状态:
def runuuid22= Inputparams.executeUpdate("update Inputparams b set b.status = :status"+
" where b.uuid = :uuid",
[status:"running",uuid:uuid])
println("runuuid22 is "+runuuid22)
上述两个命令运行完美,状态完成也一样。但是运行中的查询不会更新,也不会给出任何错误。
当我检查 mysql 数据库时,它显示了很多具有 sleep 状态的进程..
谢谢
最佳答案
如果您正在迭代一个集合,也许尝试用一个新的事务来分隔每个运行?请查看此代码:
try{
Inputparams.withNewTransaction{
Inputparams inputParams = Inputparams.findByUuid(uuid)
inputParams.status = "running"
inputParams.save()
}
catch(ex){
log.error ex
}
关于mysql - grails SchwartzJob 与 exceuteUpdate 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60288838/