java.lang.NoSuchMethodError: com.alibaba.druid.sql.ast.expr.SQLAggregateExpr.getOption()Lcom/alibaba/druid/sql/ast/expr/SQLAggregateExpr$Option; at com.dangdang.ddframe.rdb.sharding.parser.visitor.basic.mysql.MySQLSelectVisitor.visit(MySQLSelectVisitor.java:110) ~[sharding-jdbc-core-1.4.0.jar:na] at com.alibaba.druid.sql.ast.expr.SQLAggregateExpr.accept0(SQLAggregateExpr.java:98) ~[druid-1.0.16.jar:1.0.16] at com.alibaba.druid.sql.ast.SQLObjectImpl.accept(SQLObjectImpl.java:41) ~[druid-1.0.16.jar:1.0.16] at com.alibaba.druid.sql.visitor.SQLASTOutputVisitor.visit(SQLASTOutputVisitor.java:803) ~[druid-1.0.16.jar:1.0.16] at com.dangdang.ddframe.rdb.sharding.parser.visitor.basic.mysql.MySQLSelectVisitor.visit(MySQLSelectVisitor.java:92) ~[sharding-jdbc-core-1.4.0.jar:na]
为啥在1.0.12之后版本把SQLAggregateExpr方法这个给删除了,导致当当的分库框架出错了sharding-jdbc
原提问者GitHub用户z589533
如果您在使用Sharding-JDBC进行删除操作时遇到问题,可能是因为未正确使用Sharding-JDBC的API。以下是一些可能的解决方法:
使用Sharding-JDBC的API
请使用Sharding-JDBC提供的API来进行删除操作,例如:
java
Copy
String sql = "DELETE FROM table_name WHERE id = ?";
try (Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setLong(1, id);
ps.executeUpdate();
}
请注意将"table_name"替换为您的表名,以及将"id"替换为您的删除条件。
检查Sharding-JDBC的配置
请检查您的Sharding-JDBC配置是否正确,特别注意以下几个配置项:
sharding.jdbc.datasource.names:数据源名称,用于指定Sharding-JDBC要管理的数据源。
sharding.jdbc.config.sharding.tables:分片表配置,用于指定Sharding-JDBC要管理的分片表。
sharding.jdbc.config.sharding.default-database-strategy:默认分库策略,用于指定Sharding-JDBC的分库策略。
sharding.jdbc.config.sharding.default-table-strategy:默认分表策略,用于指定Sharding-JDBC的分表策略。
如果这些配置项不正确,可能会导致Sharding-JDBC无法正确管理数据库连接和执行SQL语句。
检查数据库连接
请检查您的数据库连接是否正确,包括数据库连接字符串、用户名、密码等。如果数据库连接不正确,可能会导致Sharding-JDBC无法正确连接数据库,从而无法执行SQL语句。
这个重构不当,很抱歉,已经修改为com.alibaba.druid.sql.ast.expr.SQLAggregateOption,这个不好改回去了,改回去会导致新的不兼容,能否让sharding-jdbc-core-1.4.0做修改。
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。