记goldendb使用shardingsphere分表引发问题

问题

goldendb版本:6.1.03
shardingsphere版本:4.1.1
使用sharding-jdbc连接goldendb报"where 1!=1 "异常;

check the manual that corresponds to your MySOL server version for the right syntax to use near '"table_name"' WHERE 1!=1 at line 1

原因

shardingsphere4.1.1版本中org.apache.shardingsphere.underlying.common.database.type.DatabaseTypes中的DATABASE_TYPES初始化之后只有数据库类型
goldendb默认是不支持的

public static DatabaseType getDatabaseTypeByURL(final String url) {
        return DATABASE_TYPES.values().stream().filter(each -> matchStandardURL(url, each) || matchURLAlias(url, each)).findAny().orElse(DATABASE_TYPES.get("SQL92"));
    }
会根据传入的url来和数据库类型来判断是否存在,不存在则使用SQL92协议

解决

升级sharding版本
2、将url中jdbc:goldendb改成jdbc:mysql可以规避。
或者使用SPI机制可以很好的对ShardingSphere进行扩展,重写适配goldendb的shardingsphere方言
1、实现BranchDatabaseType
2、实现DataSourceMetaData
3、在resources下添加META-INF/services/org.apache.shardingsphere.spi.database.type.DatabaseType并将GoldenDbDatabaseType路径添加到org.apache.shardingsphere.spi.database.type.DatabaseType文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值