shardingsphere icon indicating copy to clipboard operation
shardingsphere copied to clipboard

The same configuration 5.3.0 functions normally, 5.3.1 functions abnormally

Open zhang-zhipeng opened this issue 2 years ago • 3 comments

Bug Report

For English only, other languages will not accept.

Before report a bug, make sure you have:

Please pay attention on issues you submitted, because we maybe need more details. If no response anymore and we cannot reproduce it on current information, we will close it.

Please answer these questions before submitting your issue. Thanks!

Which version of ShardingSphere did you use?

5.3.1

Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?

ShardingSphere-JDBC

Expected behavior

No exception reported

Actual behavior

has exception reported

Reason analyze (If you can)

Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.

SQL:

CREATE TABLE `t_cipher_old` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `mobile` varchar(100) DEFAULT NULL,
  `pwd_cipher` varchar(100) DEFAULT NULL,
  `customer_id` varchar(100) DEFAULT NULL,
  `pwd_assisted_query` varchar(100) DEFAULT NULL,
  `mobile_cipher` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Config:sharding.yaml

databaseName: broadcast_origin
dataSources:
  broadcast_origin:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:13306/broadcast_origin?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
props:
  sql-show: true # 是否开启执行SQL的输出 true:是
mode:
  type: standalone
rules:
- !ENCRYPT
  encryptors:
    pwd-encryptor-aes: # AES加密算法
      type: AES #可逆
      props:
        aes-key-value: 123456abc
  tables:
    t_cipher_old: # 需要加密的表名
      columns:
        pwd: # 逻辑列名
          #plainColumn: pwd # 明文列名
          cipherColumn: pwd_cipher # 密文列名
          encryptorName: pwd-encryptor-aes # 配置该密文字段的加密算法,配置于spring.shardingsphere.rules.encrypt.encryptors.pwd-encryptor-aes
      queryWithCipherColumn: true # 是否使用密文字段查询 true:是, false 使用明文字段查询

JAVA Code:

String jdbcUrl = "jdbc:shardingsphere:classpath:sharding.yaml";
        String sql = "SELECT * FROM t_cipher_old t";
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver");
        dataSource.setJdbcUrl(jdbcUrl);
        try (
                Connection conn = dataSource.getConnection();
                PreparedStatement ps = conn.prepareStatement(sql)) {
                ResultSet resultSet = ps.executeQuery();
                System.out.println(resultSet);
        } catch (SQLException e) {
            e.printStackTrace();
        }

Exception:

Exception in thread "main" java.lang.AbstractMethodError
at org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder.buildRules(GlobalRulesBuilder.java:54)
at org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory.create(MetaDataContextsFactory.java:92)
at org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory.create(MetaDataContextsFactory.java:68)
at org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder.build(StandaloneContextManagerBuilder.java:54)
at org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.createContextManager(ShardingSphereDataSource.java:81)
at org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.(ShardingSphereDataSource.java:66)
at org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory.createDataSource(ShardingSphereDataSourceFactory.java:93)
at org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory.createDataSource(YamlShardingSphereDataSourceFactory.java:133)
at org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory.createDataSource(YamlShardingSphereDataSourceFactory.java:75)
at org.apache.shardingsphere.driver.jdbc.core.driver.DriverDataSourceCache.createDataSource(DriverDataSourceCache.java:51)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.apache.shardingsphere.driver.jdbc.core.driver.DriverDataSourceCache.get(DriverDataSourceCache.java:45)
at org.apache.shardingsphere.driver.ShardingSphereDriver.connect(ShardingSphereDriver.java:51)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)

Example codes for reproduce this issue (such as a github link).

zhang-zhipeng avatar Feb 08 '23 01:02 zhang-zhipeng

@zhang-zhipeng Thanks for your feedback, It is recommended that you use markdown to organize the code, otherwise it will be difficult to read.

RaigorJiang avatar Feb 08 '23 02:02 RaigorJiang

@zhang-zhipeng Thanks for your feedback, It is recommended that you use markdown to organize the code, otherwise it will be difficult to read.

Indeed, I have updated

zhang-zhipeng avatar Feb 08 '23 03:02 zhang-zhipeng

Please make sure all ShardingSphere JARs have same version.

TeslaCN avatar Feb 10 '23 13:02 TeslaCN