如何修复 #1366 - 不正确的字符串值:'\xE6\x10\x00\x00\x01\x01...'

How to fix #1366 - Incorrect string value: '\xE6\x10\x00\x00\x01\x01...'

我想将带有 postgresql 数据库的 GIS 应用程序转换为 mysql 8,我已将许多查询转换为 sql 查询。该应用程序可以 运行 但它不能显示许多空间功能。比如这个地方的风水之类的。 N 我需要输入这个地方的数据到 mysql 8. 所以,我尝试了手动输入 geom 的方法,在 phpmyadmin 中使用 lat long。

但是我第一次执行查询。

INSERT INTO `restaurant`(`name`, `address`, `open`, `close`, `price`, `description`, `geom`, `id`) VALUES ('Ajo Paris', 'Jl. S. Parman No.126','' ,'' ,'15000' ,'' , ST_GeomFromText('POINT(100.3481273 -0.9175653)', 4326 ), 'R0001');

出错了,

3617 - 纬度 100.348127 超出函数 st_geomfromtext 的范围。它必须在 [-90.000000, 90.000000].

范围内

我认为它的经纬度位置不对,所以我将其反转

INSERT INTO `restaurant`(`name`, `address`, `open`, `close`, `price`, `description`, `geom`, `id`) VALUES ('Ajo Paris', 'Jl. S. Parman No.126','' ,'' ,'15000' ,'' , ST_GeomFromText('POINT(-0.9175653 100.3481273)', 4326 ), 'R0001');

但还是报错

1366 - 字符串值不正确:第 1

列 'geom' 的“\xE6\x10\x00\x00\x01\x01...”

是否与列排序有关? 该列的排序规则是 utf8_general_ci.

如果不相关,可能是什么问题? n 我应该怎么做才能解决它?

我认为您正试图将 GEOMETRY 类型的值插入 TEXTCHAR 类型的列中。

这没有多大意义,即使有效。 Geometry 未存储为您键入的文本,它被转换为内部二进制表示形式,应存储在 GEOMETRY 类型列中。否则你将无法用它做很多事情。

将列定义为 geom GEOMETRY SRID 4326