Вставка в геопространственное поле в mysql - PullRequest
0 голосов
/ 26 января 2020

У меня есть объект string, представляющий многоугольник в шестнадцатеричном формате, и я хочу сохранить его в базе данных mysql. Я использовал `` как описано здесь . Вот метод, который я использовал для генерации многоугольника:

func GetPolygon(coordinates [][]geom.Coord) (string, error) {
    unitSquare := geom.NewPolygon(geom.XY).MustSetCoords(coordinates)

    polygon, err := wkb.Marshal(unitSquare, wkb.NDR)
    if err != nil {
        fmt.Printf("wkb marshal error: %s\n", err.Error())
        return "", err
    }

    polygonHex := hex.Dump(polygon)
    return polygonHex, nil
}

И вот как я генерирую свой запрос:

insertQuery := fmt.Sprintf(`INSERT INTO my_table (polygon) VALUE (ST_GeomFromWKB(X'%v'))`, poly)

Но когда я выполняю запрос, я получаю:

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'X'00000000  01 03 00 00 00 01 00 00  00 92 00 00 00 ff ff ff  |................|' at line 1

1 Ответ

1 голос
/ 26 января 2020

Чтобы создать шестнадцатеричную строку из байтового массива в Golang, необходимо использовать следующее:

s := hex.EncodeToString(b)

Команда Dump создает вывод xxd like.

...