debugModerate
Mysql 8 ST_GeomFromText giving error Latitude out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000]
Viewed 0 times
st_geomfromtexterrormustrangefunctionwithinmysqllatitude000000giving
Problem
I am trying the following insert query on mysql 8.
It works perfectly on mysql 5.7 but here in mysql 8 I get this
Based on some suggestion I also did this.
But yet the it gives me the same results.
Insert Into fence Set
fenceName='aa',
radius=2,
fenceGeometry=ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)It works perfectly on mysql 5.7 but here in mysql 8 I get this
error Latitude 102.189331 is out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000].Based on some suggestion I also did this.
ALTER TABLE fence MODIFY fenceGeometry geometry NOT NULL SRID 4326;But yet the it gives me the same results.
Solution
That's because on MySQL 8, they did the unthinkable and implemented the stupid method of doing geography coordinates (like MySQL). This broke backwards compatability.
Amusingly Oracle which owns MySQL does not do this on Oracle Spatial. Oracle Spatial and PostGIS are consistently
But, this,
In MySQL 5.x there was no real geographical coordinate system.
Side note
You shouldn't be using WKT for this if you have the points you can just use
More information
For more information see also,
- When you use Geometry on MySQL (any SRID) except 4326 you use (long,lat). That's (x,y) on a Cartesian system.
- When you use Geography on MySQL (SRID = 4326) you use (lat, long). That's (y,x) typically. This is done because English speakers tend to say "latitude and longitude" rather than "longitude, latitude"
Amusingly Oracle which owns MySQL does not do this on Oracle Spatial. Oracle Spatial and PostGIS are consistently
(long,lat). To resolve this switch the order, notST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)But, this,
ST_GeomFromText('POINT(3.880696482497261 102.1893310546875)', 4326)In MySQL 5.x there was no real geographical coordinate system.
Side note
You shouldn't be using WKT for this if you have the points you can just use
Point(), and ST_SRID(pt,SRID)ST_SRID(Point(3.880696482497261, 102.1893310546875), 4326)More information
For more information see also,
- Does MySQL store point datatypes as LAT LNG or LNG LAT?
Code Snippets
ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)ST_GeomFromText('POINT(3.880696482497261 102.1893310546875)', 4326)ST_SRID(Point(3.880696482497261, 102.1893310546875), 4326)Context
StackExchange Database Administrators Q#242001, answer score: 18
Revisions (0)
No revisions yet.