2014-02-11 75 views
0

我正在寫我的第一個用戶定義函數在C中被調用從MySQL。代碼很簡單:數據截斷列上的MySQL UDF

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查詢中調用它:

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)和一些奇怪的字符,非alfanumeric表作出選擇。

我在做什麼錯?

+0

你不設置'* length'到結果的長度。 – Barmar

回答