MySQL的空间索引-错误-不能从你发送到geometry字段的数据中获取几何对象



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

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

我在这里做错了什么?

OK,我找到了解决方案:如果某些列字段不包含数据,则无法创建空间索引。运行

  UPDATE `addresses` SET `point` = POINT( lng, lat )

一切正常

我有同样的错误(不能从数据中获得几何对象你发送到geometry字段),但当试图从mysql转储导入空间数据。我发现有些行有"空"(X为空或Y为空)空间数据,即使列是"非空"。

检查你是否有同样的问题,我用这个SQL描述:

SELECT id FROM locations WHERE X(coordinates)为NULL或Y(coordinates)为NULL;

如果你有一些行,那么这是为我工作的:

UPDATE locations SET coordinates = POINT(0,0) WHERE X(座标)为NULL或Y(座标)为NULL;

然后尝试mysqldump(或从phpmyadmin)并再次导入

最新更新