MySQL中的空间索引 - 错误 - 无法从发送到GEOMETRY字段的数据中获取几何对象

时间:2011-05-03 20:30:28

标签: mysql geometry geolocation spatial-index mysql-error-1416

我是整个'空间索引'的新手,但它似乎是基于纬度/经度过滤的最佳解决方案。所以我在表格中添加了一列:

所以我创建了一个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

我在这里做错了什么?

2 个答案:

答案 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)并再次导入。