首页 > 解决方案 > 为什么我的 mysql 服务器上不存在某些空间函数?

问题描述

我已经安装了一个新的本地 MySQL 服务器(版本 8)以供开发人员使用。我想使用空间功能,但其中一些不存在。

这个脚本返回给我一个很好的价值:

create database test;
use test;
select st_x(point(15, 20));

15

所以,我虽然空间扩展是本机安装的,但是一旦我使用其他功能geomfromtext,我的脚本就会抛出一个错误:

create database test;
use test;
SELECT geomfromtext('Point(15 20)');

错误代码:1305。FUNCTION test.geomfromtext 不存在 0.000 秒

我不明白,MySQL Workbench 控制台的自动补全完成了几何。 自动完成

我在安装过程中忘记了哪一步?

标签: mysqlspatial

解决方案


我刚刚浏览了官方文档,似乎该函数在 MySQL 8.0中称为ST_GeomFromText() 。

在 MySQL 5.7 中,不推荐使用多个名称下可用的几个空间函数,以使空间函数命名空间更加一致,目标是每个空间函数名称以 ST_ 开头,如果它执行精确操作,或者 MBR 如果它执行执行基于最小边界矩形的操作。在 MySQL 8.0 中,不推荐使用的函数被删除,只留下相应的 ST_ 和 MBR 函数:

  • 这些函数被删除,取而代之的是 MBR 名称:Contains()、Disjoint()、Equals()、Intersects()、Overlaps()、Within()。
  • 这些函数被删除以支持 ST_ 名称:Area()、AsBinary()、AsText()、AsWKB()、AsWKT()、Buffer()、Centroid()、ConvexHull()、Crosses()、Dimension() , Distance(), EndPoint(), Envelope(), ExteriorRing(), GeomCollFromText(), GeomCollFromWKB(), GeomFromText(), GeomFromWKB(), GeometryCollectionFromText(), GeometryCollectionFromWKB(), GeometryFromText(), GeometryFromWKB(), GeometryN ()、GeometryType()、InteriorRingN()、IsClosed()、IsEmpty()、IsSimple()、LineFromText()、LineFromWKB()、LineStringFromText()、LineStringFromWKB()、MLineFromText()、MLineFromWKB()、MPointFromText() , MPointFromWKB(), MPolyFromText(), MPolyFromWKB(), MultiLineStringFromText(), MultiLineStringFromWKB(), MultiPointFromText(), MultiPointFromWKB(), MultiPolygonFromText(), MultiPolygonFromWKB(), NumGeometries(), NumInteriorRings(), NumPoints(),PointFromText()、PointFromWKB()、PointN()、PolyFromText()、PolyFromWKB()、PolygonFromText()、PolygonFromWKB()、SRID()、StartPoint()、Touches()、X()、Y()。

  • GLength() 被删除,取而代之的是 ST_Length()。


推荐阅读