【发布时间】:2021-11-16 21:49:45
【问题描述】:
我有一个带有 PORTS 3306/tcp, 33060-33061/tcp 的 Mysql-server docker 实例。
我正在尝试通过 JDBC 连接到它,但我不断收到错误 Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure。
我创建了一个用户 test 和一个数据库也命名为 test。
我使用的代码如下:
package com.example.testconnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String username = "test";
String password = "password";
System.out.println("Connecting database...");
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
}
}
使用 Gradle 构建,具有以下依赖项:
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.0'
runtimeOnly 'mysql:mysql-connector-java:8.0.25'
}
我错过了什么?
【问题讨论】:
-
那么,你是如何运行你的 mySql 容器的?你检查过
docker ps吗? -
是的,我的
docker ps的端口是我在上面写的。也许我做错了什么,但服务在我的主机上的端口 3306 上运行,也许在容器不同 -
请提供完整的堆栈跟踪。我相信其中一个“由”提供了更多信息。还为您的 mysql 容器提供“docker ps”转储。