带有limit子句的语法错误

时间:2012-04-22 06:34:20

标签: mysql

我有这个例程在dev中工作,我把它复制到生产中,我在Update行上得到一个“检查你的语法附近......”错误。如果我拿出限制条款,它会保存。

就像我说的,这在Dev中有效。复制并粘贴结构def,所以我知道它是完全相同的。

 DELIMITER ;;
CREATE DEFINER=`user`@`%` PROCEDURE `SQS_Get_Messages`(IN queue_requested INT, IN queue_limit INT)
    SQL SECURITY INVOKER
BEGIN
    DECLARE my_uuid INT;
    DECLARE fake INT;
    DECLARE now DATETIME;

    SELECT Get_Lock('message_get',10) INTO fake;

    SELECT NOW() INTO now;  
    SELECT UNIX_TIMESTAMP()+mod(UUID_SHORT(),1000) INTO my_uuid;

    UPDATE sqs SET `status`= my_uuid, `started_timestamp` = now WHERE `status` = 0 and `queue` = queue_requested LIMIT queue_limit; 

    SELECT RELEASE_LOCK('message_get') INTO fake;
    SELECT `id`,`body`,`status` from sqs WHERE `status` = my_uuid; 

END;;
DELIMITER ;

2 个答案:

答案 0 :(得分:1)

如果它在开发中工作,但在复制并粘贴到生产中失败,则您的开发服务器和生产服务器之间的版本不匹配,或者您无法正确复制和粘贴。我无法解释任何其他解释。

答案 1 :(得分:0)

就是这样,新数据库运行的是稍微旧版本的MySQL。谢谢肯。 (我没有足够的'积分'来奖励你,但你有我的感激。:-))