当前位置: 首页 > 知识库问答 >
问题:

mysql - springboot 配置多源数据库出错?

许自强
2023-11-28

springboot 配置多源数据库问题。
测试了一下springboot配置多源数据库,mysql和postgresql,yml配置如下:

spring:  datasource:    dynamic:      primary: mysql      strict: false      datasource:        mysql:          driver-class-name: com.mysql.cj.jdbc.Driver          username: root          password: root          url: jdbc:mysql://*.*.*.*:3306/student?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT               postgresql:          url: jdbc:postgresql://localhost:5432/postgres           username: postgres          password: weixj5217          driverClassName: org.postgresql.Driver 

运行程序,出现如下错误:

……
9:30:59:048] [INFO] - org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext(ServletWebServerApplicationContext.java:292) - Root WebApplicationContext: initialization completed in 1080 ms
[19:30:59:138] [INFO] - com.zaxxer.hikari.HikariDataSource.(HikariDataSource.java:80) - mysql - Starting...
[19:31:21:237] [ERROR] - com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:594) - mysql - Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.29.jar:8.0.29]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.29.jar:8.0.29]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.29.jar:8.0.29]
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.29.jar:8.0.29]
……

从错误中看,好像mysql启动错误。

说明一下:
单独连接mysql数据库(不是多源数据库),程序正常,不会出现上面的错误。

多次修改yml配置,还是不行。

共有2个答案

高吉星
2023-11-28

先检查有没有依赖

    <dependency>        <groupId>com.baomidou</groupId>        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>    </dependency>

有的话需要贴完整错误信息

长孙玉泽
2023-11-28

从你提供的信息来看,错误似乎是在尝试连接 MySQL 数据库时出现的。CommunicationsException: Communications link failure 通常表示程序无法与数据库建立连接。以下是一些可能的原因和解决方案:

  1. 数据库URL不正确:请检查你的 MySQL 数据库 URL 是否正确。URL 应该是 jdbc:mysql://<hostname>:<port>/<database-name>。从你的配置中看,URL 是正确的,但是还是检查一下 <hostname><port><database-name> 是否正确。
  2. 网络问题:确保你的应用程序和 MySQL 数据库之间的网络连接是畅通的。可以尝试在你的服务器上运行一些简单的测试,比如 ping 命令,看看是否能到达 MySQL 服务器。
  3. 防火墙限制:如果 MySQL 服务器在不同的机器或云环境中,确保没有任何防火墙或安全组规则阻止了你的应用程序连接到 MySQL 服务器。
  4. 驱动类名是否正确:检查你的项目中是否包含了正确的 JDBC 驱动,并且在配置中使用的驱动类名是否正确。对于 MySQL,应该使用 com.mysql.cj.jdbc.Driver
  5. 依赖冲突:确保你的项目中没有任何关于数据库连接的冲突依赖。例如,如果你使用了 Spring Boot 的默认配置,那么它可能会自动引入一些关于数据库连接的默认配置,这可能会与你自己的配置产生冲突。
  6. 时区问题:在配置中,你设置了 characterEncoding=utf-8serverTimezone=GMT。请确认 MySQL 服务器的时区设置是否与你的应用一致。如果不一致,可能会出现连接错误。

请按照上述步骤进行检查和调试,如果问题依然存在,欢迎你提供更多的信息以便我们进一步排查。

 类似资料:
  • 本文向大家介绍springboot + mybatis配置多数据源示例,包括了springboot + mybatis配置多数据源示例的使用技巧和注意事项,需要的朋友参考一下 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源。 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseContextHolder是一个线

  • 本文向大家介绍springboot v2.0.3版本多数据源配置方法,包括了springboot v2.0.3版本多数据源配置方法的使用技巧和注意事项,需要的朋友参考一下 本篇分享的是springboot多数据源配置,在从springboot v1.5版本升级到v2.0.3时,发现之前写的多数据源的方式不可用了,捕获错误信息如: 异常:jdbcUrl is required with driver

  • 本文向大家介绍SpringBoot快速配置数据源的方法,包括了SpringBoot快速配置数据源的方法的使用技巧和注意事项,需要的朋友参考一下 SpringBoot如何快速配置数据源;有如下两种方式: 通过spring-boot-starter-jdbc快速配置数据源 自定义数据源DataSource 首先我们需要明确数据源DataSource有什么作用: 通过DataSource可以获取数据库连

  • 我刚开始使用springboot,我一直在尝试用它和spring security来配置一个项目,但不幸的是,我无法运行它。我得到了下一个错误: 嵌套的异常是org。springframework。靴子自动配置。jdbc。DataSourceProperties$DataSourceBeanCreationException:未能确定合适的驱动程序类 应用程序无法启动 描述: 配置DataSour

  • 我正在尝试使用两个数据源与我的SpringBoot应用程序,但无法获得第二个数据源自动连接。我尝试过很多事情,但这是我最接近的一次: 我的Yaml文件: 这是我到目前为止最接近的一次。我之所以说它是最接近的,是因为如果我删除@qualifier,那么我的两个dao方法实际上都可以工作,假设SECOND_SELECT语句对于我的DB1是有效的SQL语句。当我为非主datasouce输入@Qualif

  • 我已经使用 使用数据源连接数据库,但我们有50多个数据库。所以我想动态连接数据库。请帮帮我.