2011-03-13 66 views
3

我試圖用我的國家的地理位置填充我的數據庫。我的一個表格有4個字段:ID [PK],緯度。經度安德的GeoPointPOINT列上的MySQL INSERT/UPDATE

EDIT `SCDBs`.`Punto_Geografico`; 

SET @lat = 18.469692; 

SET @lon = -63.93212; 

SET @g = 'POINT(@lat @lon)'; 

UPDATE Punto_Geografico SET latitude = @lat, longitude [email protected], geoPoint [email protected] WHERE idpunto_geografico = 0; 

即時得到以下錯誤: 錯誤代碼:1416 無法從數據發送到幾何領域

我敢肯定「的GeoPoint」字段是幾何對象POINT字段具有空間索引。我是否缺少任何東西.14

回答

5

嘗試這樣做,而不將您的值分配給服務器值。特別是如果它們包含函數調用。 MySQL將變量的內容視爲純文本,並不會看到那裏有函數調用。

UPDATE ... SET latitude=18, longitute=-63, geoPoint=POINT(18 -63) WHERE ... 
+2

出於某種原因: UPDATE Punto_Geografico組緯度= 18.469692,經度= -63.93212,GeoPoint的=點(18.469692,-63.93212),其中idpunto_geografico = 0 ; 它說,它是成功更新,但我沒有看到geoPoint列中的任何值。另外,我在POINT語句中只做了一個「,」。 – 2011-03-13 23:07:05

+0

顯然在MySQL中我看不到什麼是幾何列內,但是如果我使用SELECT AsText(*)...我可以看到點信息。 – 2011-03-14 01:55:44

+2

這不行,FattyPotatoes的答案是正確的。 POINT()需要表示爲一個字符串並用GeomFromText()函數包裝。 – Adam 2014-10-04 13:42:44

6

您需要使用這個語法:

UPDATE ... SET latitude=18, longitute=-63, geoPoint=GeomFromText('POINT(18 -63)') WHERE ... 
+0

這隻在MySQL <5.1.35中需要,請參閱http://dba.stackexchange.com/a/33454/2725 - 接受的答案是正確的。 – cweiske 2017-02-23 07:40:58

+0

它也有效:'UPDATE ... SET latitude = 18,longitute = -63,geoPoint = POINT(18,-63)WHERE ...'。用逗號分隔POINT中的參數 – 2017-08-25 23:45:36