如何通过JMeter中的JDBC采样器运行多个MySQL语句

Tes*_*rif 3 mysql jdbc jmeter performance-testing

我在JMeter 2.13中使用JDBC sampler.

我的JMeter采样器中有大约100个删除语句,如下所示:

delete from abc where id >= ${Variable_Name};
delete from qwe where id >= ${Variable_Name};
delete from xyz where id >= ${Variable_Name};
Run Code Online (Sandbox Code Playgroud)

问题是,当我在JDBC sampler中运行单个语句时,它工作正常.但是,当我尝试从我的JDBC采样器运行2个或2个以上的语句时.它总是抛出错误.

您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以便在'从qwe删除id> = 1附近使用正确的语法;

有人可以提一下解决方法吗?以及如何克服这个问题.

Hug*_*aés 6

看来你不能在一个JDBC Request元素中执行多个语句.

我有类似的情况,我需要在继续其余的测试之前在数据库上执行一些清理语句.我能够通过在一个单独的CSV Data Set Config嵌套中使用嵌套的外部文件读取SQL语句来实现这一点.Loop ControllersetUp Thread Group

元素放置如下:

在测试示例之前设置数据库

我使用了以下配置:

循环控制器

  • 循环次数: Forever

CSV数据集配置

  • 文件名: /path/to/multiple-statements.sql
  • 变量名: STMT
  • 回收EOF: False
  • 在EOF上停止线程: True

JDBC请求

  • 查询: ${STMT}

Loop Controller设置为一直运行下去,为停止条件设置上CSV Data Set Config.每次迭代都会读取文件的一行,设置变量STMT,然后JDBC Request执行查询${STMT}.

当到达文件结尾时,setUp Thread Group将停止并且核心测试Thread Group将继续.

  • 我认为这可以在不创建循环控制器的情况下完成。在测试计划中,您可以选择循环计数。只要让它永远,它就会以同样的方式工作。 (2认同)