我是整个'空间索引'的新手,但它似乎是基于纬度/经度过滤的最佳解决方案。所以我在表格中添加了一列:
所以我创建了一个geometry
字段:
ALTER TABLE `addresses` ADD `point` POINT NOT NULL
然后我尝试添加一个索引:
ALTER TABLE `addresses` ADD SPATIAL INDEX ( `point` )
但是我收到了一个错误:
#1416 - Cannot get geometry object from data you send to the GEOMETRY field
我在这里做错了什么?
答案 0 :(得分:22)
确定我找到了解决方案:如果某些列字段不包含任何数据,则无法创建空间索引。运行后
UPDATE `addresses` SET `point` = POINT( lng, lat )
一切都很好。
答案 1 :(得分:3)
我遇到了同样的错误(无法从发送到GEOMETRY字段的数据中获取几何对象)但尝试从mysql转储导入空间数据时。 我发现有些行有“null”(X为null或Y为空)空间数据,即使该列为“NOT NULL”..
检查您是否遇到与我使用此SQL描述的问题相同的问题:
SELECT id FROM locations WHERE X(coordinates)IS NULL OR Y(coordinates)IS NULL;
如果你有一些行,那么这对我有用:
UPDATE位置SET坐标= POINT(0,0)WHERE X(坐标)IS NULL或Y(坐标)IS NULL;
然后尝试你的mysqldump(或来自phpmyadmin)并再次导入。