簡體   English   中英

MySQL 錯誤代碼:3037 提供給函數 mbrcontains 的 GIS 數據無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM