Java Postgres数据库:关系不存在
我是博士后新生。我通过flyway迁移运行以下脚本: V1.0_uu创建_服务_用户.sqlJava 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
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
注释中指定模式?我认为没有必要,但即使在该注释中指定了模式,我也收到了相同的错误tryalter role${MYSERVICE\u USERNAME}set search\u path='${SCHEMA_PREFIX},public'
要在中包含新创建的架构,我尝试使用该注释指定架构,但在运行应用程序“SCHEMA不存在”时总是遇到同样的问题我假设您检查了迁移执行。您可以添加日志吗?我试图使用该注释指定架构,但在运行应用程序“架构不存在”时,我总是遇到同样的问题。我假设您检查了迁移执行。您可以添加日志吗?