PoolingDataSource$PoolGuardConnectionWrapper.getSchema()

异常堆栈如下:

Exception in thread "main" java.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getSchema()Ljava/lang/String;
	at org.apache.shardingsphere.sql.parser.binder.metadata.util.JdbcUtil.getSchema(JdbcUtil.java:41)
	at org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaDataLoader.isTableExist(ColumnMetaDataLoader.java:108)
	at org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaDataLoader.load(ColumnMetaDataLoader.java:56)
	at org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaDataLoader.load(TableMetaDataLoader.java:46)
	at org.apache.shardingsphere.core.metadata.ShardingMetaDataLoader.load(ShardingMetaDataLoader.java:83)
	at org.apache.shardingsphere.core.metadata.ShardingMetaDataLoader.loadShardingSchemaMetaData(ShardingMetaDataLoader.java:134)
	at org.apache.shardingsphere.core.metadata.ShardingMetaDataLoader.load(ShardingMetaDataLoader.java:125)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.ShardingRuntimeContext.loadSchemaMetaData(ShardingRuntimeContext.java:65)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.MultipleDataSourcesRuntimeContext.createMetaData(MultipleDataSourcesRuntimeContext.java:57)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.MultipleDataSourcesRuntimeContext.<init>(MultipleDataSourcesRuntimeContext.java:51)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.ShardingRuntimeContext.<init>(ShardingRuntimeContext.java:49)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource.<init>(ShardingDataSource.java:54)
	at org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory.createDataSource(ShardingDataSourceFactory.java:48)
	at com.alipay.datasource.test.sharding.jdbc.Main.main(Main.java:46)

两者版本不兼容导致的异常,如果只是想解决问题,直接拉到最底,替换下对应jar版本即可。

如上异常,sharing-jdbc-core和commons-dbcp版本,

    <!-- Sharing JDBC -->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-core</artifactId>
            <version>4.1.1</version>
        </dependency>

        <!--dbcp连接池-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.3</version>
        </dependency>

sharing-jdbc-core 4.1.1版本里面使用到Connection#getSchema方法,
1.3版本的dbcp PoolingDataSource$PoolGuardConnectionWrapper里没有实现该方法,两者版本不兼容,导致AbstractMethodError异常。
在这里插入图片描述

第一次版本替换,将sharding-jdbc-core降到4.0.1,

   <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-core</artifactId>
            <version>4.0.1</version>
        </dependency>

        <!--dbcp连接池-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.3</version>
        </dependency>

又报如下异常

Exception in thread "main" java.lang.AbstractMethodError: Method org/apache/commons/dbcp/DelegatingDatabaseMetaData.supportsStoredFunctionsUsingCallSyntax()Z is abstract
	at org.apache.commons.dbcp.DelegatingDatabaseMetaData.supportsStoredFunctionsUsingCallSyntax(DelegatingDatabaseMetaData.java)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.metadata.CachedDatabaseMetaData.<init>(CachedDatabaseMetaData.java:430)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.ShardingRuntimeContext.createCachedDatabaseMetaData(ShardingRuntimeContext.java:68)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.context.ShardingRuntimeContext.<init>(ShardingRuntimeContext.java:60)
	at org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource.<init>(ShardingDataSource.java:48)
	at org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory.createDataSource(ShardingDataSourceFactory.java:50)
	at com.alipay.datasource.test.sharding.jdbc.Main.main(Main.java:46)

还是版本不兼容导致的,1.3版本dbcp对应的supportsStoredFunctionsUsingCallSyntax方法被注释掉了。
在这里插入图片描述


经过测试,目前兼容的版本如下:

        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-core</artifactId>
            <version>4.0.1</version>
        </dependency>

        <!--dbcp连接池-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值