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