开发者社区> 问答> 正文

mysql 解析出错

druidt版本1.0.25

减号语法出错,bufPos值错误 String sql = "SELECT t.id-t.id from system_conn t "; System.out.println(sql); SQLStatementParser parse = SQLParserUtils.createSQLStatementParser(sql, dbType); List list = parse.parseStatementList(); SQLStatement stmt = list.get(0); System.out.println(SQLUtils.toSQLString(stmt,dbType));

执行结果:SELECT t.id-.id FROM system_conn t 减号后面表名t被删除了

druidt版本1.0.18不会有这个问题

原提问者GitHub用户120003808

展开
收起
山海行 2023-07-05 21:33:22 67 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    MySQL解析出错可能是由于多种原因引起的,例如SQL语法错误、表不存在、列名错误等等。以下是一些可能导致MySQL解析出错的常见原因和解决方法:

    SQL语法错误
    如果SQL语句中存在语法错误,MySQL将无法正确解析该语句。在编写SQL语句时,需要仔细检查语法,确保符合MySQL的语法规范。可以使用MySQL客户端或者其他工具进行语法检查,并根据错误提示修改SQL语句。

    表不存在
    如果SQL语句中引用了不存在的表,MySQL将无法正确解析该语句。在编写SQL语句时,需要确认所引用的表是否存在,并使用正确的表名。可以使用SHOW TABLES语句查看数据库中所有表的名称,以确认表是否存在。

    列名错误
    如果SQL语句中引用了不存在的列,MySQL将无法正确解析该语句。在编写SQL语句时,需要确认所引用的列是否存在,并使用正确的列名。可以使用DESCRIBE语句查看表的结构,以确认列是否存在。

    数据类型不匹配
    如果SQL语句中出现了数据类型不匹配的情况,MySQL将无法正确解析该语句。在编写SQL语句时,需要确保所使用的数据类型符合MySQL的规范。可以使用CAST或CONVERT函数将数据类型转换为正确的类型,以避免数据类型不匹配的问题。

    2023-07-30 09:36:56
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据你提供的代码和描述,看起来问题是由于使用了druid版本1.0.25导致的解析错误。

    在这个版本的druid中,减号后面的表名t被错误地删除了,导致解析出错。
    这可能是由于druid的某个bug或变更所致。你可以尝试将druid版本降级到1.0.18来解决这个问题。

    首先,在你的项目中将druid版本更改为1.0.18,可以通过更改maven或gradle的依赖项来实现。
    然后重新编译和运行代码,看看问题是否得到解决。
    如果问题仍然存在,可能需要进一步调查和检查代码或搜索相关的druid版本的bug报告来获取更多信息和解决方案。

    2023-07-11 17:21:28
    赞同 展开评论 打赏
  • mysql支持这样的语法哈。。

    原回答者GitHub用户wenshao

    2023-07-06 12:17:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像