POINT列上的MySQL INSERT/UPDATE

Lui*_*aca 7 mysql sql spatial geospatial mysql-error-1416

我正在尝试用我的国家的地理位置填充我的数据库.我的一个表有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字段.我错过了任何东西

Fat*_*oes 10

您需要使用以下语法:

UPDATE ... SET latitude=18, longitute=-63, geoPoint=GeomFromText('POINT(18 -63)') WHERE ...
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 9

尝试不将您的值分配给服务器值.特别是如果它们包含函数调用.MySQL将vars的内容视为纯文本,并且不会看到那里有函数调用.

UPDATE ... SET latitude=18, longitute=-63, geoPoint=POINT(18 -63) WHERE ...
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用,FattyPotatoes的答案是正确的.POINT()需要表示为一个字符串并用GeomFromText()函数包装. (3认同)
  • 出于某种原因:UPDATE Punto_Geografico SET latitude = 18.469692,longitude = -63.93212,geoPoint = PoinT(18.469692,-63.93212)WHERE idpunto_geografico = 0; 它说这是成功的更新,但我没有在geoPoint列中看到任何值.另外我在POINT语句中做了一个","只有这样才有效. (2认同)