[alibaba/druid]SQL解析器无法解析 Mysql的 show variables;

2025-11-10 516 views
8

没有对应的 MysqlShowVariablesStatement 导致 SQLUtils 无法解析 mysql 语句: show variables;

回答

2

2

你用的druid版本可能太低,刚刚拉最新master代码验证ok。

public class SHOW_variables_Syntax_Test extends TestCase {

    public void test_0() throws Exception {
        String sql = "SHOW variables;";

        //SQLStatementParser parser = new MySqlStatementParser(sql);
        List<SQLStatement> stmtList =SQLUtils.parseStatements(sql, JdbcConstants.MYSQL);

        String text = SQLUtils.toSQLString(stmtList, JdbcConstants.MYSQL);
        System.out.println("test_0=="+text);

        Assert.assertEquals("SHOW VARIABLES;", text);
    }

    public void test_1() throws Exception {
        String sql = "SHOW variables like '%page%';";

        SQLStatementParser parser = new MySqlStatementParser(sql);
        List<SQLStatement> stmtList =SQLUtils.parseStatements(sql, JdbcConstants.MYSQL);

        String text = SQLUtils.toSQLString(stmtList, JdbcConstants.MYSQL);
        System.out.println("test_1=="+text);
        Assert.assertEquals("SHOW VARIABLES LIKE '%page%';", text);
    }
}

执行结果:

1

感谢。升级后解决嘞问题。