druid update语句解析问题,where条件被忽略,可能造成更新全表?

j13ufse2  于 2022-10-21  发布在  Druid
关注(0)|答案(2)|浏览(191)

sql语句如下:
update CardNum SET userMembershipId = 2,userMembershipNo = 'V2'updated = 15397644961000 where cardNum ='666'
updated字段前面无意间漏了一个逗号,经过如下parser后:
MySqlStatementParser parser = new MySqlStatementParser(sql);
SQLStatement statement = parser.parseStatement();
没有报错,statement语句变成了:
UPDATE CardNum
SET userMembershipId = 2, userMembershipNo = 'V2'

后边updated和where没有了,导致全表被更。。。

mw3dktmi

mw3dktmi1#

用的那个版本的?我测了一下,解析时就抛异常了。

b1zrtrql

b1zrtrql2#

@zhaiyaobao
项目用的1.1.5,昨天刚把master拉下来,也是一样。你能够报错?你用的哪个版本?
我又试了一下master,没报错啊。。

代码:
`
public class TempTest extends TestCase {

public void test_0() throws Exception {

    String sql = "update CardNum SET userMembershipId = 2,userMembershipNo = 'V2'updated = 15397644961000 where cardNum ='666'";

    MySqlStatementParser parser = new MySqlStatementParser(sql);
    SQLStatement statement = parser.parseStatement();

    System.out.println(statement);
}}

`

输出结果:
UPDATE CardNum SET userMembershipId = 2, userMembershipNo = 'V2'

后面被截断了,直接拿着去执行了

相关问题