MySQL函数CONTAINS和GEOMFROMTEXT不工作。

6

我有一个包含 MySQL 函数的几何方法:

select *, (SELECT SUM(t_o.value) FROM tree_operations t_o WHERE t_o.operation_id = operations.id) operationTreeValue, (SELECT COUNT(t_o.id)  FROM `tree_operations` t_o WHERE t_o.operation_id = operations.id) operationTreeNumber, (CASE\r                          WHEN operations.type = 'pieces' THEN (SELECT GROUP_CONCAT(p.name) FROM `pieces` p WHERE p.id IN (SELECT piece_id FROM `piece_row_operations` WHERE operation_id = operations.id))\r                          WHEN operations.type = 'rows' THEN (SELECT GROUP_CONCAT(r.number) FROM `rows` r WHERE r.id IN (SELECT row_id FROM `piece_row_operations` WHERE operation_id = operations.id))\r                          END) AS typeName from `operations` where operations.id IN (SELECT t_o.operation_id FROM `tree_operations` t_o WHERE t_o.tree_id IN (SELECT t.id FROM `trees` t WHERE t.coordinates IN (Contains(GeomFromText('POLYGON(49.816472 35.971209,49.7868 35.970981,49.788668 35.947219,49.15201 35.947905,49.816472 35.971209)'))))) order by `operations`.`id` desc

但令人惊讶的是,它在服务器上无法工作(而在本地完全正常)。 花费了大量时间(在不同的环境中运行查询等等),我找不到任何确切的答案。 我的查询有问题还是函数不再起作用? 附言:我的本地mysql版本为5.7,服务器为mariadb 10.2。


请提供MySQL的版本信息。 - P.Salmon
@P.Salmon的问题已被编辑。 - Alireza Amrollahi
1
GeomFromText()和GeometryFromText()在MySQL 5.7.6中已被弃用,并将在未来的MySQL版本中删除。请改用ST_GeomFromText()和ST_GeometryFromText()。- https://dev.mysql.com/doc/refman/5.7/en/gis-wkt-functions.html - P.Salmon
1
在本地和服务器版本不同的情况下进行操作是很危险的,但将一个完全独立维护的服务器加入其中则是一种冒险。 - P.Salmon
1个回答

10

MySQL 5.7.6已将一些MySQL函数,例如GeomFromText()设置为过时(deprecated);

建议改用MariaDB@latest && ST_GeomFromText()以及ST_(其他函数)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接