私はmysql 8で次の挿入クエリを試しています。
Insert Into fence Set
fenceName='aa',
radius=2,
fenceGeometry=ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
Mysql 5.7では完全に機能しますが、ここではmysql 8でこれを取得しますerror Latitude 102.189331 is out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000].
いくつかの提案に基づいて、私もこれを行いました。
ALTER TABLE fence MODIFY fenceGeometry geometry NOT NULL SRID 4326;
しかし、それでも同じ結果が得られます。
これは、MySQL 8で、(MySQLのように)地理座標を行うという考えられないほどの愚かな方法を実装したためです。これは後方互換性を壊しました。
おもしろいことに、MySQLを所有するOracleはOracle Spatialではこれを行いません。 Oracle SpatialとPostGISは一貫して(long、lat) `です。このスイッチを解決するには、順序ではなく
_ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
_
しかしこれは、
_ST_GeomFromText('POINT(3.880696482497261 102.1893310546875)', 4326)
_
MySQL 5.xでは、実際の地理座標系はありませんでした。
Point()
とST_SRID(pt,SRID)
を使用するだけのポイントがある場合は、これにWKTを使用しないでください。
_ST_SRID(Point(3.880696482497261, 102.1893310546875), 4326)
_
詳細については、