【问题标题】:Jmeter java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly endedJmeter java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束
【发布时间】:2017-07-25 16:29:30
【问题描述】:

我正在尝试使用 Jmeter 从我的数据库中删除一条记录,但遇到了一些困难。我可以很好地查询,但是当涉及到 DELETE 时,我得到了一个错误。我在我的 Jmeter 中输入以下代码:

delete from DATA_RECORDS where DATA_RECORDS_ID = (select id from DATA_RECORDS_STORE where RESOURCE_IDENTIFIER='somevalue');

delete from DATA_RECORDS_STORE where RESOURCE_IDENTIFIER='somevalue';

在 Jmeter 中运行测试后出现以下错误:

java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

但是,当我在 SQLDeveloper 中输入相同的代码时,SQL 实际上会运行脚本并删除相应的数据。

查询类型设置为:更新语句,其余字段我什么都没有:参数值、参数类型、变量名称等。我还要提一下,我正在运行 Jmeter 3.2 GUI 模式。如果你能帮助我,那将不胜感激。谢谢!

【问题讨论】:

  • 你能发布你的完整代码吗?
  • 是否允许来自 jmeter 的多个 sql 语句?我知道的其他接口不允许它,并带有非常相似的错误消息(由于在第一个分号之后有多余的文本,即第二个语句)。使用 SQL Developer,这没有问题。
  • @SudiptaMondal 这是完整的代码。如果您查看 Jmeter JDBC Request Sampler,您会看到上面的代码进入了 SQL Query 文本区域。我复制并粘贴了它。我之前在执行 select 语句时遇到过这个错误,我通过将 '=' 更改为 'like' 来修复它,但它在这里不起作用。
  • @JonathanWillcock 我尝试只运行第二个删除语句以查看是否是问题所在,但它仍然给我同样的错误消息。它一定是非常小或微妙的东西。
  • 第一条语句自己运行吗?

标签: sql database oracle jdbc jmeter


【解决方案1】:

分离到 2 个 jdbc 请求:

 delete from DATA_RECORDS where DATA_RECORDS_ID = (select id from DATA_RECORDS_STORE where RESOURCE_IDENTIFIER='somevalue')


  delete from DATA_RECORDS_STORE where RESOURCE_IDENTIFIER='somevalue'

【讨论】:

  • 当我尝试在 ONE JDBC Request 中运行以下代码时,出现了另一个错误。查询语句:从 DATA_RECORDS_STORE 中删除,其中 RESOURCE_IDENTIFIER='somevalue' 导致 java.sql.SQLIntegrityConstraintViolationException:ORA-02292:违反完整性约束 - 找到子记录。
  • 你应该保持订单
  • 您先生是个天才!你能解释一下为什么这种方法有效吗?
  • 第二张表有外键,所以删除顺序很重要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多