如何解决解析期间发现非法的非几何\'aswkb…\'值
|| 我使用了来自http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html的教程 所以我创建了两个表,插入了一些数据,当我尝试使用此类脚本获取一些数据时SELECT
c.cab_driver,ROUND(GLength(LineStringFromWKB(LineString(AsBinary(c.cab_loc),AsBinary(a.address_loc)))))
AS distance
FROM cab c,address a
WHERE a.address = \'Foobar street 110\'
ORDER BY distance ASC LIMIT 1;
我收到一个错误:\“错误代码:1367解析期间发现非法的非几何\'aswkb(c
.cab_loc
)\'值\”
有什么建议么?
我在这个问题上取得了一些进展,我尝试运行
SELECT
asbinary(c.cab_loc)
FROM usercoordinates.cab c;
而且我在每一行中都得到NULL,但是如果我使用astext,我在每一行中都会得到POINT(...)
最后我明白了,也许不是最好的解决方案,但是
SELECT
c.cab_driver,Round(glength(LineStringFromWKB(LineString(GeomFromText(astext(c.cab_loc)),GeomFromText(astext(a.address_loc)))))) AS distance
FROM cab c,address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
解决方法
SELECT c.cab_driver,Round(glength(LineStringFromWKB(LineString(GeomFromText(astext(c.cab_loc)),GeomFromText(astext(a.address_loc)))))) AS distance
FROM cab c,address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
,非常难看的解决方案,但我也找不到其他解决方案。
顺便说一下,我们可以通过使用其他包装函数来缩短查询时间:
DELIMITER $$
DROP FUNCTION IF EXISTS pointIt $$
CREATE function pointIt (src POINT)
RETURNS POINT
BEGIN
RETURN GeomFromText(astext(src));
END $$
DELIMITER ;
,我必须对Hituptony的Mysql 5.6解决方案进行一些细微更改:
SELECT c.cab_driver,Round(glength(LineStringFromWKB(LineString(c.cab_loc,a.address_loc)))) AS distance
FROM cab c,address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。