gpt4 book ai didi

mySQL DELIMITER 抛出 1064

转载 作者:可可西里 更新时间:2023-11-01 08:55:10 24 4
gpt4 key购买 nike

DELIMITER $$
DROP PROCEDURE IF EXISTS eventsNearMe$$

CREATE PROCEDURE eventsNearMe(IN inIP VARCHAR(16))
BEGIN

DECLARE ipLAT FLOAT;
DECLARE ipLONG FLOAT;

SELECT iplocationdb_location.latitude, iplocationdb_location.longitude
INTO ipLAT, ipLONG
FROM `iplocationdb_ip`
LEFT JOIN iplocationdb_location ON iplocationdb_location.id=iplocationdb_ip.location_id
WHERE iplocationdb_ip.prefix=(INET_ATON(inIP)>>24)
AND INET_ATON(inIP) BETWEEN iplocationdb_ip.start_ip AND iplocationdb_ip.end_ip LIMIT 1;

CREATE TEMPORARY TABLE tempEVENTS
SELECT `eid`,(((acos(sin((ipLAT*pi()/180)) * sin((`lat`*pi()/180))+cos((ipLAT*pi()/180)) * cos((`lat`*pi()/180)) * cos(((ipLONG- `long`)*pi()/180))))*180/pi())*60*1.1515) as d FROM `mke_events` HAVING `d` <= 10 LIMIT 1;

SELECT * FROM tempEVENTS;

DROP TEMPORARY TABLE tempEVENTS;
END
$$
DELIMITER ;

根据我的理解,上面的代码应该创建一个快速的小 sp 来获取给定 ip 地址附近的事件。然而,通过我所有的搜索,我还没有找到一个令人满意的理由让它在 DELIMITER(第 1 行)上抛出 1064。
即使我只有:

DELIMITER $$
SELECT * FROM iplocationdb_location;
$$
DELIMITER ;

它仍然触发 1064.mySQL 版本 5.0.77。

注意:我在 DELIMITER 和定界字符串之间留有空格。NOTE2:我正在使用heidiSQL来运行这个脚本,根据我的理解,这应该等同于从命令行运行它。

最佳答案

由于 DELIMITER 行上额外的尾随空格(制表符),我也遇到了虚假的与 DELIMITER 相关的语法错误,使用命令行 mysql 而不是 HeidiSQL。例如:

DELIMITER ;<TAB><TAB>

删除尾随的空格修复了它(你对空格的评论提示了我,谢谢。)

关于mySQL DELIMITER 抛出 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com