【问题标题】:Data truncated for column on mysql UDFmysql 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 设置为结果的长度。

标签: mysql c user-defined-functions


【解决方案1】:

添加:

*length = strlen(result);

documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2013-04-20
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多