Java Postgres数据库:关系不存在

Java Postgres数据库:关系不存在,java,spring,postgresql,docker-compose,flyway,Java,Spring,Postgresql,Docker Compose,Flyway,我是博士后新生。我通过flyway迁移运行以下脚本: V1.0_uu创建_服务_用户.sql DO $do$ BEGIN IF NOT EXISTS(SELECT FROM pg_catalog.pg_roles WHERE rolname = '${MYSERVICE_USERNAME}') THEN create role ${MYSERVICE_USERNAME} WITH LOGIN NOSUPERUSER NOINHERIT NOCREATEDB NOCREA

我是博士后新生。我通过flyway迁移运行以下脚本:

V1.0_uu创建_服务_用户.sql

DO
$do$
BEGIN
    IF NOT EXISTS(SELECT FROM pg_catalog.pg_roles WHERE  rolname = '${MYSERVICE_USERNAME}') THEN
        create role ${MYSERVICE_USERNAME} WITH LOGIN NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE NOREPLICATION PASSWORD '${MYSERVICE_PASSWORD}';
    END IF;
END
$do$
grant usage on all sequences in schema ${SCHEMA_PREFIX} to ${MYSERVICE_USERNAME};
alter default privileges in schema ${SCHEMA_PREFIX} grant SELECT, INSERT, UPDATE, DELETE on tables to ${MYSERVICE_USERNAME};
V1.1\u创建\u Schema.sql

create schema if not exists ${SCHEMA_PREFIX};
V1.2\u将权限授予用户。sql

DO
$do$
BEGIN
    IF NOT EXISTS(SELECT FROM pg_catalog.pg_roles WHERE  rolname = '${MYSERVICE_USERNAME}') THEN
        create role ${MYSERVICE_USERNAME} WITH LOGIN NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE NOREPLICATION PASSWORD '${MYSERVICE_PASSWORD}';
    END IF;
END
$do$
grant usage on all sequences in schema ${SCHEMA_PREFIX} to ${MYSERVICE_USERNAME};
alter default privileges in schema ${SCHEMA_PREFIX} grant SELECT, INSERT, UPDATE, DELETE on tables to ${MYSERVICE_USERNAME};
最后:V2.1_uu创建_Images.Table.sql

CREATE TABLE ${SCHEMA_PREFIX}.images
(
    id          SERIAL primary key,
    name varchar(250) NOT NULL,
    link        varchar(250) NOT NULL,
    width       int          NOT NULL,
    height      int          NOT NULL,
    unique (name, link)
);
当我尝试运行应用程序时,它会产生以下错误: 关系“图像”不存在 以下是数据库模型:

@Entity
@Table(name = "images")
@EntityListeners(AuditingEntityListener.class)
public class ImagesDBO implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", nullable = false)
  private Long id;

  @Column(name = "name", nullable = false)
  private String name;

  @Column(name = "link", nullable = false)
  private String link;

  @Column(name = "width", nullable = false)
  private Integer width;

  @Column(name = "height", nullable = false)
  private Integer height;
在我能找到的所有示例中,有人在声明关系不存在时出错,这是因为他们在表名中使用大写字母。我的表名没有大写字母。 我被卡住了,弄不明白为什么这个表不存在!有人能帮我吗?
谢谢。

该错误是由hibernates或flyway提供的

您是否尝试使用
@Table
指定架构:

示例:

@实体
@表(name=“author”,schema=“bookstore”)
公共类ImagesDBO{…}

请说明错误是由hibernates或flyway提供的

您是否尝试使用
@Table
指定架构:

示例:

@实体
@表(name=“author”,schema=“bookstore”)
公共类ImagesDBO{…}

我从未使用过spring,但您可能需要在
@Table
注释中指定模式?我认为没有必要,但即使在该注释中指定了模式,我也收到了相同的错误尝试
alter role${MYSERVICE\u USERNAME}set search\u path='${schema\u PREFIX},public'
将新创建的模式包含在我从未使用过的spring中,但您可能需要在
@Table
注释中指定模式?我认为没有必要,但即使在该注释中指定了模式,我也收到了相同的错误try
alter role${MYSERVICE\u USERNAME}set search\u path='${SCHEMA_PREFIX},public'
要在中包含新创建的架构,我尝试使用该注释指定架构,但在运行应用程序“SCHEMA不存在”时总是遇到同样的问题我假设您检查了迁移执行。您可以添加日志吗?我试图使用该注释指定架构,但在运行应用程序“架构不存在”时,我总是遇到同样的问题。我假设您检查了迁移执行。您可以添加日志吗?