mysql UDF 上列的数据被截断
Posted
技术标签:
【中文标题】mysql UDF 上列的数据被截断【英文标题】:Data truncated for column on mysql UDF 【发布时间】:2014-02-11 16:53:40 【问题描述】:我正在用 C 语言编写我的第一个用户定义函数,以便从 mysql 调用。代码很简单:
char *getKey(UDF_INIT *initid __attribute__((unused)),
UDF_ARGS *args, char *result, unsigned long *length,
char *is_null, char *error __attribute__((unused)))
const char *word=args->args[0];
strcpy(result,"EOOOOOOOO");
return result;
我已经编译并加载它没有问题。
CREATE FUNCTION getKey RETURNS STRING SONAME 'udf_key.so';
为了测试它,我在插入查询中调用它:
INSERT INTO `seed4c`.`users` (`iduser`,`userscol`) VALUES (1,getkey('aa'));
userscol 是一个 Varchar(45),因此应该有足够的空间用于返回的字符串。我收到警告
1 row(s) affected, 1 warning(s): 1265 Data truncated for column 'userscol' at row 1
在表格中进行选择时,该字段具有预期值 (EOOOOOOOO) 和一些奇怪的字符,非字母数字。
我做错了什么?
【问题讨论】:
您没有将*length
设置为结果的长度。
【参考方案1】:
添加:
*length = strlen(result);
见documentation
【讨论】:
以上是关于mysql UDF 上列的数据被截断的主要内容,如果未能解决你的问题,请参考以下文章
通过 rodbc 写入 mysql 数据库的 posix 被截断
MySQL Load Data Infile - Nulls 导致错误 1265:数据被截断
在枚举字段(DB)中插入字符串值(java)时获取“列的数据被截断”
[MySQL]--MySQL表中某个列插入数据总被截断,报编码方式的语法错误,实际是column的not null属性和更改编码语法导致的冲突。