我是SpringBoot的新手。我试图创建一个Spring Boot应用程序,我使用Docker运行。当我运行这个应用程序时,我得到以下错误
org.postgresql.util.PSQLException: FATAL: role "amigoscode" does not exist
字符串
我没有任何提示,因为我无法跟踪此错误。角色“amigoscode”已经存在。我在application.yml和docker-compose.yml下面附加
application.yml
server:
port: 8080
spring:
application:
name: customer
datasource:
password: password
url: jdbc:postgresql://localhost:5432/customer
username: amigoscode
jpa:
hibernate:
ddl-auto: create-drop
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
format_sql: 'true'
show-sql: 'true'
型
docker-compose.yml
services:
postgres:
container_name: postgres
image: postgres
environment:
POSTGRES_USER: amigoscode
POSTGRES_PASSWORD: password
PGDATA: /data/postgres
volumes:
- postgres:/data/postgres
ports:
- "5432:5432"
networks:
- postgres
restart: unless-stopped
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
PGADMIN_CONFIG_SERVER_MODE: 'False'
volumes:
- pgadmin:/var/lib/pgadmin
ports:
- "5050:80"
networks:
- postgres
restart: unless-stopped
networks:
postgres:
driver: bridge
volumes:
postgres:
pgadmin:
型
你能告诉我,我在这里做错了什么吗?我在这里提到了其他类似的问题,但没有一个能解决我的问题。谢谢。
5条答案
按热度按时间0mkxixxg1#
除了上面的提示,请确保Postgres没有在Docker之外的本地机器上运行,因为它可能会与Docker中的Postgres示例冲突
voj3qocg2#
对我来说,这是有效的:
application.yaml
文件,用我自己的凭证修改username
和password
数据,像这样:application.yaml
如果您使用的是IntelliJ Community Edition,在第一次启动后,您应该使用
\d
命令在本地检查psql中新创建的表。1l5u6lss3#
当您运行Postgres容器并将
POSTGRES_USER
作为环境变量传递时,会运行初始化脚本以创建用户。但是,如果文件夹(postgres卷)已经包含旧运行的数据,则会跳过初始化,并且不会创建用户。尝试使用新卷并在postgres容器启动时检查日志。6ie5vjzr4#
您的堆栈使用卷
postgres
定义变量POSTGRES_USER
和POSTGRES_PASSWORD
。postgres
容器将仅在 * 第一次启动 * 时创建这些用户,但如果此卷之前已创建,则将重用现有数据很可能您已经使用此卷运行了
postgres
容器,在这种情况下,您需要删除它,然后重新创建它,例如:字符串
然后重新创建您的容器和卷(以及其他组件(如有必要)):
型
zxlwwiss5#
请打开pgAdmin,登录到PostgreSQL并创建新的数据库。
创建新数据库
的数据
然后命名为“amigoscode”,你就可以走了。
amgigoscode数据库
的
对我来说效果很好。