簡體   English   中英

如何正確設置MySql數據庫中具有類型point的字段的值?

[英]How can I correctly set the value of a field having type point in a MySql database?

我不太喜歡地理空間數據,但存在以下問題。 我正在使用MySql,並且在嘗試添加此表行中類型為point的字段的值時遇到了一些困難。

我有一張這樣的桌子:

CREATE TABLE MarketDetails (
  id              BigInt(20) NOT NULL AUTO_INCREMENT,
  localization_id BigInt(20) NOT NULL,
  market_name     VarChar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
  market_cod      VarChar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
  description     Text CHARACTER SET latin1 COLLATE latin1_swedish_ci,
  gps             point, 
  PRIMARY KEY (
      id
  )
)

如您所見,該表包含類型為pointgps字段。 在我看來,此數據類型最適合存儲點的GPS坐標。

我試圖使用IDE插入該字段的值,但是它不起作用...使用我的IDE,我可以插入所有其他字段值,但不能插入gps字段值。

如何嘗試手動進行? 例如,我插入了以下記錄:

id               localization_id      market_name       market_cod       description                  gps                                                                                                                                                                                                                                                            
---------------------------------------------------------------------------------------------------------------
1                31                   Kibuye            cod001           Kibuye Village Market        

如何正確創建一個更新 SQL查詢,以使用以下坐標設置此gps字段來更新此記錄?:

lat: -2,17897
long: 29,371491

我正在嘗試這樣的事情,但它不起作用:

UPDATE  MarketDetails
SET     gps = Point(ST_GeomFromText('POINT(1 1)'))
WHERE id = 1

我收到此錯誤消息:

#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') WHERE id = 1' at line 2

怎么了? 我想念什么? 如何解決此問題?

如果您能夠在分開的列中導入緯度/經度值,例如DOUBLE數據類型,則可以嘗試以下操作:

ALTER TABLE table ADD coords Point;
UPDATE table SET coords = POINT(lat, lon);

在這種情況下,我將“ coords”列添加為POINT類型。 然后,使用lan和lon列更新coords列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM