我是整个'空间索引'的新手,但它似乎是基于纬度/经度的过滤的最佳解决方案.所以我在表格中添加了一列:
所以我创建了一个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)
我在这做错了什么?
我正在尝试用我的国家的地理位置填充我的数据库.我的一个表有4个字段:ID [PK],纬度.经度和地理点
EDIT `SCDBs`.`Punto_Geografico`;
SET @lat = 18.469692;
SET @lon = -63.93212;
SET @g = 'POINT(@lat @lon)';
UPDATE Punto_Geografico SET latitude = @lat, longitude =@lon, geoPoint =@g WHERE idpunto_geografico = 0;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:错误代码:1416无法从您发送到GEOMETRY字段的数据中获取几何对象
我很确定'geoPoint'字段是带有空间索引的POINT字段.我错过了任何东西
+---------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | UNI | NULL | |
| utm | point | NO | MUL | NULL | |
+---------+---------+------+-----+---------+----------------+
insert into life(user_id, utm) values(99,point(4,4));
ERROR 1416 (22003): Cannot get geometry object from data you send to the GEOMETRY field
Run Code Online (Sandbox Code Playgroud)