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

使用注解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 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd