[Err] 1366 - Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'add_delivery_test(1,2)'
轉載自: https://blog.csdn.net/tengdazhang770960436/article/details/14053297
1.解釋:
這是一個自定義的Mysq函式在執行時候所報的錯誤
2.Mysql的函式:
CREATE FUNCTION `getClassName`(classId INTEGER)
RETURNS varchar(50) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE cName VARCHAR(50) DEFAULT '';
SELECT `name` INTO cName from class where cid=classId;
RETURN cName;
END;
3.分析:
報錯的含義就是此函式在第一行定義的cName這個欄位被賦予了錯誤的字串值:'\xE4\xB8\xAD\xE6\x96\x87'
實際上就函式裡面的變數接收到的值跟它定義的不一致,但是一看還是varchar型別為什麼會不一致呢?
再仔細檢查它被賦予的值裡面一定是有中文在裡面的,所以問題就在於中文,要解決這個問題就需要讓cName這個變數可以接收中文才行,於是把上面的cName宣告修改如下:
CREATE FUNCTION `NewProc`(classId INTEGER)
RETURNS varchar(50) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE cName VARCHAR(50) CHARSET utf8 DEFAULT '';
SELECT `name` INTO cName from class where cid=classId;
RETURN cName;
END;
就是在聲明cName的後面給它指定了編碼格式:CHARSET utf8
再次執行此函式,結果中有中文也不會報錯了。