开发者社区> 问答> 正文

SQL解析器无法解析 Mysql的 show variables

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

T1.png

T2.png

原提问者GitHub用户Aaron3S

展开
收起
山海行 2023-07-05 16:01:34 92 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在使用 SQL 解析器时,如果无法解析 Mysql 的 show variables 命令,可能是由于以下原因:

    SQL 解析器版本不兼容:不同版本的 SQL 解析器对 Mysql 的 show variables 命令的解析方式可能会有所不同。如果您使用的 SQL 解析器版本较低,可能无法正确解析 show variables 命令。建议您升级 SQL 解析器到最新版本,并重新尝试解析命令。

    配置文件错误:如果 SQL 解析器的配置文件设置不正确,可能会导致解析失败。建议您检查配置文件的设置,并确保设置正确。

    命令语法错误:如果 show variables 命令的语法错误,可能会导致解析失败。建议您检查命令的语法是否正确。

    2023-07-30 21:39:47
    赞同 展开评论 打赏
  • 这可能是由于Druid连接池版本较旧,不支持解析该特定的MySQL语句。

    解决这个问题的方法是更新Druid连接池到支持show variables;语句解析的版本。您可以尝试升级Druid连接池的版本到最新的稳定版本,以确保其具有对常见MySQL语句的正确解析和支持。

    2023-07-09 09:57:34
    赞同 展开评论 打赏
  • 你用的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.png

    原回答者GitHub用户lizongbo

    2023-07-06 10:31:42
    赞同 展开评论 打赏
  • 是SQLUtils无法解析MySQL的show variables语句导致的。可能的原因如下:

    SQL解析器版本过低:SQLUtils工具在解析MySQL的show variables语句时需要使用适当的SQL解析器版本,您可以检查当前使用的SQL解析器版本是否过低。

    SQL解析器不支持show variables语句:有些SQL解析器不支持MySQL的show variables语句,这可能是导致解析失败的原因之一。您可以尝试使用更现代的SQL解析器,或者使用SQLUtils提供的MySQL特定解析器来解析show variables语句。

    show variables语句中有错误:show variables语句本身可能包含错误,例如语法错误、无效的变量等。您可以检查语句中的变量名称和语法是否正确,以便更好地定位问题。

    2023-07-05 16:16:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像