Mysql mariadb已被报告为“错误”;“如果”结束;
我有一个SQL语句已报告1064个错误,请帮助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
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<代码>如果(以这种方式)可以。这是否在存储过程中(如果是,则是在您尝试运行该过程时发生的,还是在您尝试创建该过程时发生的)?谢谢您的回答!问题已经解决了,你的回答没问题,再次感谢!