0

私はこのルーチンを 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 ;
4

2 に答える 2

1

開発環境では機能するが、運用環境へのコピー アンド ペーストで失敗する場合は、開発サーバーと運用サーバーの間でバージョンが一致していないか、適切にコピー アンド ペーストできていません。私が見ることができる他の説明はありません。

于 2012-04-22T07:02:14.647 に答える
0

つまり、新しいデータベースは少し古いバージョンの MySQL を実行しています。ありがとうケン。(あなたに適切な報酬を与えるには十分な「ポイント」がありませんが、感謝しています。:-) )

于 2012-04-22T17:20:03.243 に答える