Sql 为什么Perl的DBIx::Class$resultset->update在复杂的搜索查询中失败?

Sql 为什么Perl的DBIx::Class$resultset->update在复杂的搜索查询中失败?,sql,perl,dbix-class,Sql,Perl,Dbix Class,我有一个Perl搜索,如下所示: my $rs = shift->search( { -and => [ { 'for_revocation' => 1 }, [ { status => { 'not_in' => [ 'revoked', 'revoking']

我有一个Perl搜索,如下所示:

my $rs = shift->search( {
      -and => [
            { 'for_revocation' => 1 },
            [
                { 
                     status => { 
                        'not_in' => [ 'revoked', 'revoking'] 
                    },
                },
                {   
                    status => 'revoking',
                    updated => { 
                        '<' => \'now() - interval 1 hour' 
                    }
                },
            ]
        ]
    });
但是我得到了错误

DBI异常:DBD::mysql::st execute 失败:您的SQL中有一个错误 句法;检查手册 对应于您的MySQL服务器 要使用的正确语法的版本 第1行处吊销“1”的“0”附近 [对于语句更新wmv_尝试集 状态=?其中阵列0xADF93A8 对于撤销?使用参数值: 0='revoking',1=1]评估20938 第1行

如果我使用$rs->as_查询来获取用于执行搜索的SQL,它看起来如下所示:

SELECT .... FROM wmv_attempt me WHERE ( ( ( status NOT IN ( ?, ? ) OR ( status = ? AND 
updated < now() - interval 1 hour ) ) AND for_revocation = ? ) )
这很好用

当它对resultset进行更新时,似乎无法正确创建WHERE子句

我怀疑这是一个错误

有人能提出我可能做错了什么或其他方法吗


谢谢,Tom

你能确认结果集除了更新位是否有效吗?您还可以提到您使用的Perl、DBIx::Class、SQL::Abstract、DBI、DBD::MySQL和MySQL的版本。在irc“dbix类”的帮助下,我通过使用-or=>[]成功地修复了它。他们已经注意到这是一个bug,需要在下一版本中修复。您应该提交自己问题的答案并接受它,以便该问题不在未回答列表中:
SELECT .... FROM wmv_attempt me WHERE ( ( ( status NOT IN ( ?, ? ) OR ( status = ? AND 
updated < now() - interval 1 hour ) ) AND for_revocation = ? ) )