序列存在时不存在 - Postgres/Spring Boot

ion*_*n20 6 postgresql hibernate spring-data database-sequence

我正在编写一个 Spring Boot web 应用程序并使用 Postgres 数据库来保存我的数据。我使用 Postgres 创建了一个表,create table user (id bigserial primary key not null, name text not null;sequence_name通过查看模式(在本例中为user_id_seq)来识别它。然后,在UserSpring Boot 的实体类中,我添加了以下内容:

@Entity
@Table(name = "user")
public class User implements Serializable {

    @Id
    @SequenceGenerator(name = "user_local_seq", sequenceName = "user_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_local_seq")
    private Long id;
...
Run Code Online (Sandbox Code Playgroud)

确保sequenceName与我之前看到的相匹配。现在,当我启动 Spring Boot 应用程序时,我能够成功启动它,但在跟踪中出现以下“错误”:

main] org.hibernate.tool.hbm2ddl.SchemaExport  : ERROR: sequence "user_id_seq" does not exist
Run Code Online (Sandbox Code Playgroud)

我杀死了该应用程序并再次启动它,这一次,我得到了:

main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000389: Unsuccessful: drop sequence user_id_seq
main] org.hibernate.tool.hbm2ddl.SchemaExport  : ERROR: sequence "user_id_seq" does not exist
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我错过了什么吗?任何帮助/见解表示赞赏。

Adr*_*nto 2

这是洞察力。

ERROR: sequence "user_id_seq" does not exist
Run Code Online (Sandbox Code Playgroud)

这意味着您的序列要么不存在于数据库中 ,要么用户无权访问它。

解决方案:

  1. user_id_seq通过命令查看数据库\ds
  2. 按顺序向特定用户授予访问权限。
    将 SCHEMA schema_name 中的所有序列授予 user_name;