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

uxh89sit  于 5个月前  发布在  Spring
关注(0)|答案(5)|浏览(105)

我是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:


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

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容器,在这种情况下,您需要删除它,然后重新创建它,例如:

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

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

docker-compose up -d

zxlwwiss

zxlwwiss5#

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


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



对我来说效果很好。

相关问题