[英]SQLSTATE[22023]: Invalid parameter value: 3037 Invalid GIS data provided to function mbrcontains
[英]MySQL error code: 3037 Invalid GIS data provided to function mbrcontains
我在 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;
它給出了包含被棄用請使用 mbrcontains 但 mbrcontains 仍然給出相同的異常只有 find_in_set 有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.