mysql 8.0以上版本空间地理函数 SRID 4326(WGS84)的axis-order(轴顺序) 改为了lat-long,低版本4326的axis-order为long-lat 导致同样的代码不兼容两个版本的解决方案,以及用Stored Generated Column提升空间地理函数 执行效率
1.select ST_GeomFromText(‘POINT(1 1)’,4326,‘axis-order=long-lat’) ,实测不行
SRID用4326,指定轴顺序,想法很美好,低版本不支持,哈哈哈,气不气。
2.select ST_GeomFromText(‘POINT(1 1)’,0)或者select ST_GeomFromText(‘POINT(1 1)’),这种方式可以,但是要自己写代码做参数校验,不然脏数据就很多。
SRID不用4326 用默认的即0,相当于去除经纬度范围限制 ,是一个普通的二维坐标系,缺点是数据入库前要自己写代码做参数合法性校验。因为MySQL 8.0.16 之后check约束才正真实现,MySQL 8.0.16 之前如果用这种方式解决版本兼容,就得代码中做参数合法性校验
3.mysql8.0以上版本关于这部分的文档内容
By default, geographic coordinates (latitude, l

MySQL 8.0及以上版本的SRID 4326空间地理函数轴顺序变为lat-long,导致与低版本不兼容。解决方法包括使用SRID 0或 Stored Generated Column。在Stored Generated Column中,通过函数创建点坐标,以提升空间地理函数执行效率。
最低0.47元/天 解锁文章
1499

被折叠的 条评论
为什么被折叠?



