JMeter JDBC插入请求报错:无效数据类型问题求助
JMeter JDBC插入请求数据类型无效问题解决方法
问题场景
SZ_1E_MYSQL1表插入报错
初始SQL语句:
INSERT INTO SZ_1E_MYSQL1 (TS_15M,MSISDN,IMEI,IMSI, MCC, MNC, LAC, CELL) VALUES (?, ?, ?, ?, ?, ?, ?, ?);
参数值配置:
${TS_15M},${MSISDN},${IMEI},${IMSI},${MCC},${MNC},${LAC},${CELL}
参数类型配置:
varchar,bigint,bigint,bigint,int,int,int,bigint
对应表结构:
mysql> desc SZ_1E_MYSQL1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | TS_15M | varchar(17) | YES | | NULL | | | MSISDN | bigint | YES | | NULL | | | IMEI | bigint | YES | | NULL | | | IMSI | bigint | YES | | NULL | | | MCC | int | YES | | NULL | | | MNC | int | YES | | NULL | | | LAC | int | YES | | NULL | | | CELL | bigint | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 8 rows in set (0.00 sec)
报错情况:
- 初始配置报错:
Invalid data type: int - 修改参数类型为
INTEGER后,新报错:Invalid data type: VARCHAR(17)
SZ_1E_MYSQL4表插入配置
请求体:
[Prepared Update Statement] INSERT INTO SZ_1E_MYSQL4 (TS_15M,MSISDN,MCC,MNC,LAC,CELL,HOST,URI,L7REQ,L7REP,LATITUDE,LONGITUDE,CILENTBYTE,SERVERBYTE,CLIENTFIRSTSEC,SERVERFIRSTSEC ,CLIENTLASTSEC,SERVERLASTSEC,CLIENTIPTO,SERVERIPTO,CLIENTIP,SERVERIP) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
参数值示例:
2021/1/29 ,14171138121,460,26,96079244,84548213,DaEpVTEZRErrchtJZbKg ,uPTSXECeNNbiHCZXMNRPCMXNXoqaFtxjJqYtuRcvsOHazXZFMndqxWECTDRpBffOgJEBnGjOZTEGygRsVCjAZhSMYpPchvvYMYXWTsKkoKkfDYTeMjJSYaKRACrYtEofGZDVkxRCEDXEfUBehsmyDbXgbwwXHAMvmoZUosfbRavJEJSYqfPBVHOINqcPfEXxpUstCurU,ckDNXSPRRNGBbzEBJbTg,MnAXzPmEtROHAEpAUqbi,SvhCWBqZIsao ,fgLwLqMYhXUc,${CILENTBYTE },165230,976465,658595 ,311940,239175,KyyJeNNNXXzIsbjhmUdx,dqANPDDbsScnLCnISabp,vpOXhVroqWxhBdYfELYP,HkChRZNSERISRPuEFHbS
参数类型配置:
VARCHAR(17), BIGINT,INTEGER,INTEGER,INTEGER,BIGINT,VARCHAR(128),VARCHAR(10240),VARCHAR(1024),VARCHAR(1024),VARCHAR(16),VARCHAR(16),BIGINT,BIGINT,BIGINT, BIGINT,BIGINT,BIGINT, VARCHAR(128), VARCHAR(128),VARCHAR(128),VARCHAR(128)
解决方法
1. 用JDBC标准数据类型替代MySQL原生类型
JMeter的JDBC请求参数类型需要填写JDBC标准类型名称,而非MySQL的原生类型别名:
- MySQL的
int对应JDBC类型INTEGER - MySQL的
varchar(n)对应JDBC类型VARCHAR(无需带长度) - MySQL的
bigint对应JDBC类型BIGINT
2. 修正SZ_1E_MYSQL1的参数类型
修改为JDBC标准类型:
VARCHAR,BIGINT,BIGINT,BIGINT,INTEGER,INTEGER,INTEGER,BIGINT
3. 修正SZ_1E_MYSQL4的参数类型
去掉所有VARCHAR后的长度,统一使用JDBC标准类型:
VARCHAR,BIGINT,INTEGER,INTEGER,INTEGER,BIGINT,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,VARCHAR,BIGINT,BIGINT,BIGINT,BIGINT,BIGINT,BIGINT,VARCHAR,VARCHAR,VARCHAR,VARCHAR
4. 额外检查项
- 确保CSV文件中数据格式与JDBC类型匹配,比如数值列不能包含非数字字符
- 核对JDBC请求的「Variable Names」配置与CSV文件列顺序完全一致
- 确认JDBC驱动版本与MySQL服务器版本兼容,避免驱动不兼容导致的类型识别问题
内容的提问来源于stack exchange,提问作者YanGang
相关产品推荐
相关产品推荐

