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表作出選擇。
我在做什麼錯?
你不設置'* length'到結果的長度。 – Barmar