美文网首页JMeter学习笔记
JMeter 使用过程中遇到的坑

JMeter 使用过程中遇到的坑

作者: DC_ing | 来源:发表于2019-04-01 12:33 被阅读78次

    标题名数字为坑遇到的日期

    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}的例子,请查看以下截图。

    image.png

    解决方法

    将以上截图,名称的公共参数名称改为创建数据库-${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
    1. 在有多个 sql 语句的 JDBC Request Sampler 中,SQL Query -> Query Type选项,将select statement变更成 Callable Statement即可。

    PS:测试多个 sql 语句时,必须在每条sql 语句后面加分号(;);最后一个 sql 语句可以不用加。

    相关文章

      网友评论

        本文标题:JMeter 使用过程中遇到的坑

        本文链接:https://www.haomeiwen.com/subject/mttvbqtx.html