Mysql
OVHCloud MySQL 伺服器上的儲存過程因“欄位列表”中的“未知列”而失敗
我在這裡使用 jaro winkler 儲存過程:https ://gist.github.com/TheHiddenHaku/7229861 。這在我的本地 MySQL 伺服器(版本 8.0.19)上執行良好,但是當嘗試在 OVHCloud MySQL 伺服器(版本 8.0.26)上使用相同的功能時,它失敗並出現錯誤
Unknown column '' in 'field list'
。我正在測試各種語句:
select jws('test','test1') select jws("test","test1") select jws(myColumn, 'test1') from myTable;
並且所有查詢都會導致相同的錯誤。
您的伺服器似乎正在使用
sql_mode=''
. OVHCloud MySQL 伺服器有 sql_modeANSI,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_ALL_TABLES
。ANSI 啟動 ANSI_QUOTES 模式,該模式將雙引號 (
"
) 解釋為欄位名稱。您的 jaro winkler 儲存過程使用雙引號來定義字元串 string=“value”(l.16、17 和 38)。沒有
ANSI_QUOTES
,MySQL 讀取:變數字元串等於值。使用
ANSI_QUOTES
,MySQL 讀取:變數字元串等於名為“值”的欄位的值。您需要更新儲存過程以使用單引號 (
'
) 進行字元串定義。... set common1=''; set common2=''; ... set in2 = concat(substr(in2,1,curSub-1),concat('0',substr(in2,curSub+1,length(in2)-curSub+1)));