我有一个可用的 MySQL 数据库。我创建了备份并在服务器上恢复,没有任何错误。我查询找到MySQL版本
SHOW VARIABLES LIKE "%version%";
本地主机 MySQL 版本是:
服务器 MySQL 版本是:
localhost 工作正常,但现在在我的一个存储过程中,服务器上出现异常:
Error Code: 3037 Invalid GIS data provided to function mbrcontains.
当我没有使用任何地理数据时,我没有找到有关此异常的任何帮助。
更新
我在存储过程中使用 contains 来创建异常
SELECT Data_Type INTO TargetFieldType FROM information_schema.COLUMNS
WHERE information_schema.COLUMNS.COLUMN_NAME= TargetFieldName
AND information_schema.COLUMNS.TABLE_NAME=TableName
AND information_schema.COLUMNS.TABLE_SCHEMA=dbName;
IF (( CONTAINS(@TargetFieldType ,'VARCHAR')= TRUE )
OR (CONTAINS(TargetFieldType,'TEXT')= TRUE )
OR (CONTAINS(TargetFieldType,'LONTTEXT')= TRUE)
OR (CONTAINS(TargetFieldType,'CHAR')= TRUE) ) THEN
SET TargetFieldValue = '''' + TargetFieldValue +'''';
END IF ;
最佳答案
花了几个小时后我找到了解决方案。我已将 sp 查询中的 contains 更改为 Find_In_Set
SELECT Data_Type INTO TargetFieldType FROM information_schema.COLUMNS
WHERE information_schema.COLUMNS.COLUMN_NAME= TargetFieldName
AND information_schema.COLUMNS.TABLE_NAME=TableName
AND information_schema.COLUMNS.TABLE_SCHEMA='WMC';
IF (( FIND_IN_SET(@TargetFieldType ,'VARCHAR')= TRUE )
OR (FIND_IN_SET(TargetFieldType,'TEXT')= TRUE )
OR (FIND_IN_SET(TargetFieldType,'LONTTEXT')= TRUE)
OR (FIND_IN_SET(TargetFieldType,'CHAR')= TRUE) ) THEN
SET TargetFieldValue = '''' + TargetFieldValue +'''';
END IF ;
现在工作正常了。我还不知道问题所在,除了当我运行时
SHOW WARNINGS;
它给出 Contains 已被废弃,请使用 mbrcontains 但 mbrcontains 仍然给出相同的异常,只有 find_in_set 有效
关于MySQL错误代码: 3037 Invalid GIS data provided to function mbrcontains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149895/