在地理坐标的点列中插入点值时出错

时间:2017-04-21 16:09:04

标签: mysql

我有一个点列,现在我不想使用GeomFromText(POINT(45.713958 14.209463))计算的点值来填充它。我怎么一直得到这个错误,我不知道该怎么做:

无法从发送到GEOMETRY字段的数据中获取几何对象

这是我的SQL查询

INSERT
INTO
  `locations`(
    `unique_id`,
    `latitude`,
    `longitude`,
    `coordinates`,
  )
VALUES(
  'Y2UyMTA4N2',
  45.933191,
  15.316599,
  'GeomFromText(POINT(45.713958 14.209463))',
)

如何插入点值查询?

更新 我的创建表语句

CREATE TABLE IF NOT EXISTS `locations` (
  `id_location` INT NOT NULL AUTO_INCREMENT,
  `unique_id` VARCHAR(10) NOT NULL,
  `latitude` DECIMAL(9,7) NULL,
  `longitude` DECIMAL(9,7) NULL,
  `coordinates` POINT NOT NULL,
  PRIMARY KEY (`id_location`),
  UNIQUE INDEX `unique_id_UNIQUE` (`unique_id` ASC),
  SPATIAL INDEX `coordinates_idx` (`coordinates` ASC))
ENGINE = MyISAM

2 个答案:

答案 0 :(得分:1)

文字为 - POINT(45.713958 14.209463)GeomFromText是一个函数,因此请尝试此查询 -

INSERT
INTO
  `locations`(
    `unique_id`,
    `latitude`,
    `longitude`,
    `coordinates`
  )
VALUES(
  'Y2UyMTA4N2',
  45.933191,
  15.316599,
  GeomFromText('POINT(45.713958 14.209463)')
)

答案 1 :(得分:1)

  

13.15.3 Functions That Create Geometry Values from WKT Values :: GeomFromText(wkt[, srid]), GeometryFromText(wkt[, srid])

     

...

     

从MySQL 5.7.6开始,不推荐使用GeomFromText()和GeometryFromText()   并将在未来的MySQL版本中删除。使用ST_GeomFromText()   而是ST_GeometryFromText()。

尝试:

INSERT INTO `locations`
( `unique_id`,
  `latitude`,
  `longitude`,
  `coordinates`
) VALUES (
    'Y2UyMTA4N2',
    45.933191,
    15.316599,
    -- 'GeomFromText(POINT(45.713958 14.209463))' -- ERROR
    -- GeomFromText('POINT(45.713958 14.209463)')
    ST_GeomFromText('POINT(45.713958 14.209463)')
);

请参阅db-fiddle