【问题标题】:Jmeter Issues with JDBC Request and variablesJDBC 请求和变量的 Jmeter 问题
【发布时间】:2011-12-07 18:28:09
【问题描述】:

我在使用 Jmeter 和存储/使用其中的变量时遇到了一些问题:

  1. 我有一个 JDBC 请求,它使用以下 sql 执行非常简单的“选择语句”:

    select count(member_id) from member
    

然后将其存储在名为 count 的变量中。我知道计数应该是多少(应该是 312),但 count_1 得到的值是 40077。更令人不安的是,在某个时候,它开始工作并获得正确的计数。知道发生了什么吗?

  1. 在单独的 JDBC 请求中,我检索成员列表:

    select member_id from members 
    

这存储在一个名为 members 的变量中。然后我创建了一个 THIRD JDBC 请求来查询和抓取一个随机成员:

select * from members where member_id = ? 

在“参数值”中,我输入了${__V(member_${__Random(1,10)})}(注意我输入了 10,而不是 $count,因为我什至无法让它与硬编码的数字一起正常工作)。我看到这被正确解析,但我得到的错误是:

org.postgresql.util.PSQLException: ERROR: invalid input syntax for integer: "member_7" 

所以它没有替换 member_7 变量的值。相反,它只是传递字符串。我在这里做错了什么?

【问题讨论】:

  • 运行“从成员中选择成员 ID”的 JDBC 请求将该值存储在成员变量中。 Jmeter 将创建一个 member_# 变量来保存结果的计数,然后是 member_1、member_2(对于从查询返回的尽可能多的成员)。不想每次都选同一个,所以想通过在会员后面加一个随机数来随机选一个结果_
  • 所以根据某人的建议,我尝试使用随机变量控制。它允许您生成一个随机数并在其前面添加文本。这非常适合我想要“member_”+随机数的情况。我唯一的问题是最小值和最大值似乎只接受数字。我尝试将我的 ${count_1} 变量放在这里,以确保将计数限制为数据库中存在的成员数,但它似乎不起作用。有没有办法在最小/最大字段中指定一个变量?

标签: postgresql variables jdbc jmeter


【解决方案1】:

如果你有表成员,你有一些 member_id 以这种方式(例如):

| member_id |
+-----------+
| 1         |
| 2         |
| 1         |

如果你想统计这张表中的 UNIQUE 成员,你必须以这种方式使用 SELECT:

SELECT COUNT(DISTINCT member_id) FROM member;

当您错过关键字 DISTINCT 时,您将仅获得表中的 COUNT 行。

您必须以类似方式使用的第二个 SELECT:

SELECT DISTINCT member_id FROM member;

最后一个问题是,为什么你试图为整数值分配一个像'member_7'这样的值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2020-09-15
    相关资源
    最近更新 更多