Postgres数据库:关系不存在



我是Postgres的新手。我通过flyway迁移运行了以下脚本:

V1.0_Create_Service_Users.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$

V1.1_Create_Schema.sql

create schema if not exists ${SCHEMA_PREFIX};

V1.2_Grant_Permissions_To_Users.sql

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_Create_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:指定架构

示例:

@Entity
@Table(name = "author", schema = "bookstore")
public class ImagesDBO { ... }

最新更新