Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql mariadb已被报告为“错误”;“如果”结束;_Mysql_Mariadb - Fatal编程技术网

Mysql mariadb已被报告为“错误”;“如果”结束;

Mysql mariadb已被报告为“错误”;“如果”结束;,mysql,mariadb,Mysql,Mariadb,我有一个SQL语句已报告1064个错误,请帮助 UPDATE `MessageQueue` SET `Status`= 0, `RetryCount`= `RetryCount`+ '1', `LastRetryTime` = NOW(), `CanBeRemoved`=1 WHERE `MsgHash`= 1 AND `Status`=0; SET @retVal = ROW_COUNT(); IF (@retVal = 0) THEN UPDATE `MessageQueue` SE

我有一个SQL语句已报告1064个错误,请帮助

UPDATE `MessageQueue`
SET `Status`= 0, `RetryCount`= `RetryCount`+ '1', `LastRetryTime` = NOW(), `CanBeRemoved`=1
WHERE `MsgHash`= 1 AND `Status`=0;
SET @retVal = ROW_COUNT();
IF (@retVal = 0) THEN
    UPDATE `MessageQueue` SET `Status`= 5 WHERE `MsgHash`= 1;
    END IF;
SELECT @retVal;
这是在执行之后: (1行受影响) 执行时间:00:00:00:000 换乘时间:00:00:00:016 总时间:00:00:00:016

(受影响的0行) 执行时间:00:00:00:000 换乘时间:00:00:00:015 总时间:00:00:00:015

错误码: 1064 您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以获取第2行“”附近要使用的正确语法 -------在这里,如果在更新
消息队列中删除“;”
设置
状态
=5,其中
MsgHash
=1;,此错误将消失------- 执行时间:00:00:00:000 换乘时间:00:00:00:000 总时间:00:00:00:000

错误码: 1064 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行“end if”附近使用的正确语法

执行时间:00:00:00:000 换乘时间:00:00:00:000 总时间:00:00:00:000

(返回1行) 执行时间:00:00:00:000 换乘时间:00:00:00:000 总时间:00:00:00:000有几个问题:

  • 您使用的是哪种版本的MariaDB
  • 您是从存储过程还是匿名块(BEGIN NOT ATOMIC)调用语句
我无法从匿名块复制问题:

开始不是原子的
更新消息队列`
设置'LastRetryTime`=NOW()
其中,`Status`=1;
SET@`retVal`:=行计数();
如果(@`retVal`=0),则
更新消息队列`
设置`状态`=5
其中`Status`=0;
如果结束;
结束;

请参阅。

这是sql:UPDATE MessageQueue SET Status=0,RetryCount=RetryCount+'1',LastRetryTime=NOW(),CanBeRemoved=1,其中MsgHash=1,Status=0;设置@retVal=ROW_COUNT();如果(@retVal=0),则更新MessageQueue SET Status=5,其中MsgHash=1;如果结束;选择@retVal<代码>如果(以这种方式)可以。这是否在存储过程中(如果是,则是在您尝试运行该过程时发生的,还是在您尝试创建该过程时发生的)?谢谢您的回答!问题已经解决了,你的回答没问题,再次感谢!