J'essaie la requête d'insertion suivante sur MySQL 8.
Insert Into fence Set
fenceName='aa',
radius=2,
fenceGeometry=ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
Cela fonctionne parfaitement sur MySQL 5.7 mais ici dans MySQL 8, je reçois ceci error Latitude 102.189331 is out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000].
Basé sur une suggestion que j'ai aussi fait cela.
ALTER TABLE fence MODIFY fenceGeometry geometry NOT NULL SRID 4326;
Mais pourtant, cela me donne les mêmes résultats.
C'est parce que sur MySQL 8, ils ont fait l'impensable et mis en œuvre la méthode stupide de faire des coordonnées de la géographie (comme MySQL). Cela a cassé la compatibilité à l'envers.
Oracle amusant qui possède MySQL ne fait pas cela sur Oracle spatial. Oracle spatial et postgis sont systématiquement (long, lat) `. Pour résoudre ce changement, la commande, pas
ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
Mais ça,
ST_GeomFromText('POINT(3.880696482497261 102.1893310546875)', 4326)
Dans MySQL 5.x, il n'y avait pas de véritable système de coordonnées géographiques.
Vous ne devriez pas utiliser WKT pour cela si vous avez les points que vous pouvez simplement utiliser Point()
et ST_SRID(pt,SRID)
ST_SRID(Point(3.880696482497261, 102.1893310546875), 4326)
Pour plus d'informations, voir aussi,