我是 Java 新手,正在尝试设置第一个 API。
我有一个 Springboot 应用程序,它连接到 docker 容器上的 postgresql 数据库。
我确实设法从应用程序访问数据库,因此数据库已打开并可以按照我的
application.properties
:进行访问
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5433/portfolio
spring.datasource.username=postgres
spring.datasource.password=123456
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=none
尝试使用以下命令通过
flyway
设置迁移时:
mvn 飞行路线:迁移
我收到错误:
找不到处理 jdbc 的数据库:postgresql://localhost:5433/portfolio
这就是
pom.xml
的 flyway
的样子:
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>10.7.1</version>
<configuration>
<sqlMigrationSeparator>__</sqlMigrationSeparator>
<locations>
<location>filesystem:src/main/resources/db/migration/portfolio</location>
</locations>
<url>jdbc:postgresql://localhost:5433/portfolio</url>
<user>postgres</user>
<password>123456</password>
</configuration>
<dependencies>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>10.7.1</version>
</dependency>
</dependencies>
</plugin>
编辑 - 根据要求添加 docker-compose
version: "3.8"
volumes:
db:
services:
postgresdb:
container_name: postgres_container
image: postgres
restart: unless-stopped
env_file: ./.env
environment:
- POSTGRES_USER=$POSTGRESDB_USER
- POSTGRES_PASSWORD=$POSTGRESDB_ROOT_PASSWORD
- POSTGRES_DB=$POSTGRESDB_DATABASE
ports:
- $POSTGRESDB_LOCAL_PORT:$POSTGRESDB_DOCKER_PORT
volumes:
- db:/var/lib/postgres
pgadmin:
image: dpage/pgadmin4:latest
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: admin
PGADMIN_LISTEN_PORT: 5050
ports:
- '5050:5050'
.env 文件
POSTGRESDB_USER=postgres
POSTGRESDB_ROOT_PASSWORD=123456
POSTGRESDB_DATABASE=portfolio
POSTGRESDB_LOCAL_PORT=5433
POSTGRESDB_DOCKER_PORT=5432
错误提示为
No database found to handle jdbc:postgresql
。这并不意味着数据库不可访问/运行,而是 Flyway 无法处理 PostgreSQL 数据库类型。您应该将其添加到 Maven 插件依赖项中:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
<version>10.7.1</version>
</dependency>