关于jmeter:JMeter-JDBC-使用过程中遇到的坑

55次阅读

共计 2168 个字符,预计需要花费 6 分钟才能阅读完成。

JDBC

一、开始执行脚本时,因为读取自定义变量报错,导致呈现字符转化失败异样cannot be cast to java.lang.String

具体 log 请看:


java.lang.ClassCastException: org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl cannot be cast to java.lang.String
    at org.apache.jmeter.threads.JMeterVariables.get(JMeterVariables.java:118) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.engine.util.SimpleVariable.toString(SimpleVariable.java:54) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:147) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:116) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:101) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.testelement.AbstractTestElement.getPropertyAsString(AbstractTestElement.java:281) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.testelement.AbstractTestElement.getName(AbstractTestElement.java:165) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:449) ~[ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:3.2 r1790748]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]

起因

起因是因为 Sampler 的名称带上读取公共参数 ${read-public-parameters} 的例子,请查看以下截图。

解决办法

将以上截图,名称的公共参数名称改为 创立数据库 -${testDataBaseName}即可。

二、查问中文内容无后果的解决办法

在应用 JMeter 进行 JDBC 查询数据库时,sql 语句应用英文和数字能够查问到记录,而应用中文则查问不到记录,而且应用雷同的中文语句,能够在终端命令上和数据库管理工具上也能够查问到。

起因

以上问题是因为数据库应用的编码与 jmeter 查问时,应用的编码不统一,导致查问的条件转换后不统一,导致查问不到正确记录或查问到谬误记录。

JMeter 的默认编码是ISO-8859-1,而 mysql 数据库因为要存储中文信息,所以个别应用utf-8。在 JMeter 上填写的中文查问语句经字符编码转换到 mysql 上,不是之前填写的中文字段,导致查问条件生效,天然就无奈查问到正确的后果了。

解决办法

JDBC Connection Configuration 配置元件,Database URLuseUnicode=true&characterEncoding=UTF-8,即可解决问题。

三、多条 sql 语句执行时,响应报错

起因

  1. 链接数据库没有容许应用多条语句;
  2. JDBC Request 这个 Sampler 外面的 SQL Query -> Query Type 选项中,select statement选项是不反对多个 sql 语句。

解决办法

  1. JDBC Connection Configuration 配置元件,Database URLallowMultiQueries=true

  2. 在有多个 sql 语句的 JDBC Request Sampler 中,SQL Query -> Query Type选项,将 select statement 变更成 Callable Statement即可。

PS:测试多个 sql 语句时,必须在每条 sql 语句前面加分号(;);最初一个 sql 语句能够不必加。

正文完
 0