私はこのルーチンを dev で動作させ、それを本番環境にコピーしようとしましたが、Update 行で "check your syntax near..." エラーが表示されます。limit 句を削除すると保存されます。
私が言うように、これは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 ;