ldddd_ 2020-09-14 15:48 采纳率: 0%
浏览 124

使用注解AOP完成多数据源配置后,报错No database select,但是url没有问题

使用多数据源配置多个HikariCP数据库连接池

 @Bean(name = ETERNAL_DB)
    public DataSource eternalDataSource(HikariProperties properties) {

        HikariDataSource dataSource = DataSourceBuilder.create()
                .url("jdbc:mysql://xx.xx.xx.xx/dbName")
                .username("xxx")
                .password("xxx")
                .driverClassName("com.mysql.jdbc.Driver")
                .type(HikariDataSource.class)
                .build();

        return properties.setAttributeToDataSource(dataSource);
    }

HikariProperties中的代码

@Configuration
public class HikariProperties {

    private static final int IDLE_TIMEOUT = 60000;
    private static final int MAX_POOL_SIZE = 50;
    private static final int MINIMUM_POOL_SIZE = 5;
    private static final int MAX_LIFTTIME = 120000;
    private static final int CONNECTION_TIMEOUT = 20000;
    private static final String DATASOURCE_CLASS_NAME = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource";


    public HikariDataSource setAttributeToDataSource(HikariDataSource hikariDataSource) {
        hikariDataSource.setDataSourceClassName(DATASOURCE_CLASS_NAME);
        hikariDataSource.setConnectionTimeout(CONNECTION_TIMEOUT);
        //连接空闲生命周期设置
        hikariDataSource.setIdleTimeout(IDLE_TIMEOUT);
        hikariDataSource.setMinimumPoolSize(MINIMUM_POOL_SIZE);
        hikariDataSource.setMaximumPoolSize(MAX_POOL_SIZE);
        //检查空余连接优化连接池设置时间,单位毫秒
        hikariDataSource.setMaxLifetime(MAX_LIFTTIME);
        hikariDataSource.setConnectionTestQuery("SELECT 1");
        return hikariDataSource;
    }
}

然后就报错

### Cause: java.sql.SQLException: No database selected
; uncategorized SQLException; SQL state [3D000]; error code [1046]; No database selected; nested exception is java.sql.SQLException: No database selected] with root cause
java.sql.SQLException: No database selected
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

改了一下 改成这样就没问题了
改了eternalDataSource的建立DataSource方式

 @Bean(name = ETERNAL_DB)
    public DataSource statisticsDataSource() {

               String url = "jdbc:mysql://xx.xx.xx.xx/dbName";
        String user = "xxx";
        String passWord = "xxx"
        String dbEncoding = ConfigHelper.getMysqlEncoding();

        HikariConfig config = new HikariConfig();
        config.setMaximumPoolSize(4);
        config.setMinimumPoolSize(2);
        config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
        config.addDataSourceProperty("url", url);
        config.addDataSourceProperty("encoding", dbEncoding);
        config.addDataSourceProperty("noAccessToProcedureBodies", "true");
        config.addDataSourceProperty("user", user);
        config.addDataSourceProperty("password", passWord);

        return new HikariDataSource(config);
    }

到底我上面的写法哪里有问题啊 ,求高人指点吧
很迷

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2020-09-14 16:20
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 手机连接电脑热点显示无ip分配
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大