首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL分隔符抛出1064

问mySQL分隔符抛出1064
EN

Stack Overflow用户
提问于 2011-05-14 11:00:19
回答 1查看 811关注 0票数 3
代码语言:javascript
复制
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地址附近的事件。然而,通过我所有的搜索,我还没有找到一个令人满意的理由,让它在分隔符(第1行)上抛出1064。

即使我只有:

代码语言:javascript
复制
DELIMITER $$
SELECT * FROM iplocationdb_location;
$$
DELIMITER ;

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-10-24 09:03:20

我还得到了与分隔符相关的虚假语法错误,使用命令行mysql而不是HeidiSQL,因为在分隔符一行上有额外的尾随空格(制表符)。例如:

代码语言:javascript
复制
DELIMITER ;<TAB><TAB>

删除尾随的空格修复了它(您关于空格的评论给了我提示,谢谢。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5999540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档