#mysql #prepared-statement #spatial #wkt
#mysql #подготовленный оператор #пространственный #wkt
Вопрос:
У меня есть два сценария, используя следующее утверждение:
INSERT INTO areas (name, polygon) VALUES (?, POLYGON(?,?,?,?,?,?))
Приведет к таким ошибкам:
Illegal non geometric ''58.03665463092348 14.974815566795314'' value found during parsing
Похоже, проблема здесь в том, что мои широта и долгота указаны как тексты внутри POLYGON().
Однако, в соответствии с форматом WKT, мне нужен другой набор () в моем заявлении:
INSERT INTO areas (name, polygon) VALUES (?, POLYGON((?,?,?,?,?,?)))
что приведет только к следующей ошибке:
Operand should contain 1 column(s)
Я в недоумении, как мне использовать подготовленные операторы вместе с пространственной информацией mysql?
Комментарии:
1. Оказывается, если я просто добавлю все в запрос без предварительной подготовки оператора (даже не экранируя значения), это работает как шарм … но я действительно хочу избежать ввода, поскольку он сгенерирован пользователем, какие-либо намеки на то, почему я не могу избежать данных широты / долготы?
2. Это помогло бы увидеть схему таблицы.
3. Это простой столбец polygon вместе с пространственным индексом: CREATE TABLE
areas
(id
int(10) unsigned NOT NULL AUTO_INCREMENT,name
varchar(45) СОПОСТАВЛЯЕТ utf8_bin ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ NULL,polygon
полигон NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (id
), ПРОСТРАНСТВЕННЫЙ КЛЮЧspatial
(polygon
) ) ENGINE=MyISAM AUTO_INCREMENT=10 КОДИРОВКА ПО УМОЛЧАНИЮ = utf8 СОПОСТАВЛЕНИЕ =utf8_bin$$