Spring Boot org.postgresql.util.PSQLException:FATAL:role“amigoscode”不存在

uxh89sit  于 2024-01-06  发布在  Spring
关注(0)|答案(5)|浏览(181)

我是SpringBoot的新手。我试图创建一个Spring Boot应用程序,我使用Docker运行。当我运行这个应用程序时,我得到以下错误

  1. org.postgresql.util.PSQLException: FATAL: role "amigoscode" does not exist

字符串
我没有任何提示,因为我无法跟踪此错误。角色“amigoscode”已经存在。我在application.yml和docker-compose.yml下面附加
application.yml

  1. server:
  2. port: 8080
  3. spring:
  4. application:
  5. name: customer
  6. datasource:
  7. password: password
  8. url: jdbc:postgresql://localhost:5432/customer
  9. username: amigoscode
  10. jpa:
  11. hibernate:
  12. ddl-auto: create-drop
  13. properties:
  14. hibernate:
  15. dialect: org.hibernate.dialect.PostgreSQLDialect
  16. format_sql: 'true'
  17. show-sql: 'true'


docker-compose.yml

  1. services:
  2. postgres:
  3. container_name: postgres
  4. image: postgres
  5. environment:
  6. POSTGRES_USER: amigoscode
  7. POSTGRES_PASSWORD: password
  8. PGDATA: /data/postgres
  9. volumes:
  10. - postgres:/data/postgres
  11. ports:
  12. - "5432:5432"
  13. networks:
  14. - postgres
  15. restart: unless-stopped
  16. pgadmin:
  17. container_name: pgadmin
  18. image: dpage/pgadmin4
  19. environment:
  20. PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
  21. PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
  22. PGADMIN_CONFIG_SERVER_MODE: 'False'
  23. volumes:
  24. - pgadmin:/var/lib/pgadmin
  25. ports:
  26. - "5050:80"
  27. networks:
  28. - postgres
  29. restart: unless-stopped
  30. networks:
  31. postgres:
  32. driver: bridge
  33. volumes:
  34. postgres:
  35. pgadmin:


你能告诉我,我在这里做错了什么吗?我在这里提到了其他类似的问题,但没有一个能解决我的问题。谢谢。

0mkxixxg

0mkxixxg1#

除了上面的提示,请确保Postgres没有在Docker之外的本地机器上运行,因为它可能会与Docker中的Postgres示例冲突

voj3qocg

voj3qocg2#

对我来说,这是有效的:

  • 创建一个psql数据库,名为“amigoscode”本地
  • 修改application.yaml文件,用我自己的凭证修改usernamepassword数据,像这样:

application.yaml

  • 附加说明:*

如果您使用的是IntelliJ Community Edition,在第一次启动后,您应该使用\d命令在本地检查psql中新创建的表。

1l5u6lss

1l5u6lss3#

当您运行Postgres容器并将POSTGRES_USER作为环境变量传递时,会运行初始化脚本以创建用户。但是,如果文件夹(postgres卷)已经包含旧运行的数据,则会跳过初始化,并且不会创建用户。尝试使用新卷并在postgres容器启动时检查日志。

6ie5vjzr

6ie5vjzr4#

您的堆栈使用卷postgres定义变量POSTGRES_USERPOSTGRES_PASSWORDpostgres容器将仅在 * 第一次启动 * 时创建这些用户,但如果此卷之前已创建,则将重用现有数据
很可能您已经使用此卷运行了postgres容器,在这种情况下,您需要删除它,然后重新创建它,例如:

  1. # WARNING: this will delete all containers and volumes
  2. # including pg_data volume and pgadmin volume
  3. # make sure to make a backup if needed
  4. docker-compose down -v

字符串
然后重新创建您的容器和卷(以及其他组件(如有必要)):

  1. docker-compose up -d

zxlwwiss

zxlwwiss5#

请打开pgAdmin,登录到PostgreSQL并创建新的数据库。
创建新数据库


的数据
然后命名为“amigoscode”,你就可以走了。
amgigoscode数据库



对我来说效果很好。

相关问题