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

通信链路故障,spring boot+MySql+Docker+Hibernate

相弘方
2023-03-14

我正在与spring boot、hibernate和MySQL合作。在运行应用程序时,它按照预期运行得很好。但是在制作docker-compose文件并使用mysql docker映像运行app docker映像时,它会出现这个错误。

错误com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败java.net.ConnectException:连接被拒绝。

private Connection createConnection() throws SQLException 
{
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        String mysqlUrl = "jdbc:mysql://localhost/database?autoReconnect=true&useSSL=false";
        Connection connection = DriverManager.getConnection(mysqlUrl, "root", "root");
        return connection;
}

应用程序.属性

spring.datasource.url=jdbc:mysql:/localhost/database?autoreconnect=true&usessl=false spring.datasource.username=root

spring.datasource.password=root

请指导我如何解决这个问题。

**docker-compose.yml**

version: '3'

services:
  docker-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=database
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    ports:
      - 3307:3306

  app:
    image: app:latest
    ports:
       - 8091:8091
    depends_on:
       - docker-mysql

共有2个答案

裴鸿熙
2023-03-14

Docker论坛的讨论在我遇到这个错误时帮助了我。对我来说,这是一个缓存问题,运行docker-compose down--rmi all后没有得到错误

靳金鹏
2023-03-14

问题是由于在jdbc URL中引用了localhost。

下面的配置应该可以工作。

**docker-compose.yml**

version: '3'

services:
  docker-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=database
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    ports:
      - 3307:3306

  app:
    image: app:latest
    ports:
       - 8091:8091
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false
    depends_on:
       - docker-mysql
 类似资料:
  • 我用java从MySQL查询了一些记录。但是在一些查询中,我遇到了一个问题,使查询失败,但在其他情况下,它查询成功。错误消息是下一个: 我尝试过一些方法,比如: 在 但什么都没发生。 我的环境是: MySQL: 5.5.3-m3-log源代码分布 Java: 1.60_16 jdk: HotSpot(TM)64位服务器VM(构建14.2-b01,混合模式) JDBC: mysql连接器-java-

  • 我有一个带有JDBC mysql连接的服务器,但每天早上检查服务器时都会出现这样的错误: 在com.mysql.jdbc.mysqlio.readfly(mysqlio.java:1395)在com.mysql.jdbc.mysqlio.reuseandreadpacket(mysqlio.java:1539)在com.mysql.jdbc.mysqlio.checkerrorpacket(mys

  • 我在Stackoverflow的另一个问题中尝试了这个建议,并在连接方面做了如下更改 但我的项目还是失败了 严重:执行身份验证com时发生异常。mysql。jdbc。例外情况。jdbc4。通信异常:通信链路故障 谁能告诉我克服这个问题的最好方法是什么?

  • 这是一个错误: 无databaseCom.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 从服务器成功接收的最后一个数据包是在1,325毫秒前。最后一个成功发送到服务器的数据包是在1,316毫秒之前。 这是我的代码:

  • 我们正在运行一个带有Spring Hibernate MySql的J2EE应用程序,该应用程序在内部使用C3P0和Connector/J进行连池。 C3P0 C3P0配置 我的应用程序在一段时间后内部调用存储过程,我遇到以下错误 错误日志 现在,当我查看数据库日志时,我发现大多数查询都处于“创建排序索引”状态,如下所示 有人能帮我吗... 编辑 1.c3p0初始化日志

  • StackOverflow上发布的与通信有关的问题似乎已经够多了。但没有一个能帮我走出困境。 但是,当我试图通过JDBC连接DB服务器时,它仍然失败,出现异常“com.mysql.JDBC.exceptions.jdbc4.CommunicationsException:Communications link Failure”。 测试类如下所示。