博客列表 > #1366 - Incorrect string value: '\xE6\x96\xB0\xE9\x97\xBB' for column 'cate_name' at row 1

#1366 - Incorrect string value: '\xE6\x96\xB0\xE9\x97\xBB' for column 'cate_name' at row 1

那山的博客
那山的博客原创
2017年09月29日 10:34:233109浏览

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

再次运行此函数,结果中有中文也不会报错了。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议