Mysql 与Docker compose的通信链路故障
类似的问题解决不了我的问题 我正在尝试将我的应用程序连接到MySQL服务器,但没有成功。 我似乎找不到导致此连接失败的错误 这是完整的错误日志: 这是我的docker-compose.yml:Mysql 与Docker compose的通信链路故障,mysql,jdbc,docker-compose,Mysql,Jdbc,Docker Compose,类似的问题解决不了我的问题 我正在尝试将我的应用程序连接到MySQL服务器,但没有成功。 我似乎找不到导致此连接失败的错误 这是完整的错误日志: 这是我的docker-compose.yml: version: '3.8' services: mysql-ricette: container_name: mysqlRicette image: mysql volumes: - ./mysql:/docker-entrypoint-initdb.d
version: '3.8'
services:
mysql-ricette:
container_name: mysqlRicette
image: mysql
volumes:
- ./mysql:/docker-entrypoint-initdb.d
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: ricette
MYSQL_USER: user
MYSQL_PASSWORD: password
ricette-service:
container_name: ricette
build: ./ricette
depends_on:
- consul
- mysql-ricette
- kafka
- zookeeper
这是我申请ricette服务的application.yml:
这是我想保存在数据库中的实体:
@Entity
@Data @NoArgsConstructor
public class RicettaCompleta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String autore;
private String titolo;
private String preparazione;
public RicettaCompleta(String autore, String titolo, String preparazione) {
this();
this.autore = autore;
this.titolo = titolo;
this.preparazione = preparazione;
}
}
我知道这个错误意味着数据源配置有问题。但我不知道是什么。
是的,mysql ricette数据库实际上正在运行
请帮助我修复我一直遇到的错误。您需要将mysql ricette链接到ricette服务。更新的yml文件如下所示。也可以在java代码中替换mysql url,即application.yml或application.properties,无论您与
jdbc一起使用:mysql://mysql-ricette:3306/ricette?serverTimezone=UTC
version: '3.8'
services:
mysql-ricette:
container_name: mysqlRicette
image: mysql
volumes:
- ./mysql:/docker-entrypoint-initdb.d
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: ricette
MYSQL_USER: user
MYSQL_PASSWORD: password
ricette-service:
container_name: ricette
build: ./ricette
depends_on:
- consul
- mysql-ricette
- kafka
- zookeeper
links:
- mysql-ricette
将
com.mysql.jdbc.Driver
更改为com.mysql.cj.jdbc.Driver
并将mysql
更改为mysql:5.7
,成功了。
我理解第一个更改,因为驱动程序已弃用,但我没有得到mysql驱动程序。您可以发布数据源url吗?url:jdbc:mysql://mysql-ricette:3306/ricetteCan 您从主机连接到数据库?是的,我对数据库本身没有问题您如何初始化HikariDataSource?你能发布你的应用程序道具吗?可能驱动程序也不是最新的。在图片中使用“mysql”将使用最新版本,目前是8.x,但是如果您使用的驱动程序是“Connector/J 5.1”,我认为它不支持mysql 8.x。看看这个:。从
com.mysql.jdbc.Driver
切换到com.mysql.cj.jdbc.Driver
不能解决这个问题,因为加载com.mysql.jdbc.Driver
将加载com.mysql.cj.jdbc.Driver
。