在liquibase中,我的changeset如下所示:
<createSequence schemaName="public"
incrementBy="1"
minValue="1"
sequenceName="user_seq" />
<createTable tableName="user" schemaName="public">
<column name="id" type="bigint" defaultValueSequenceNext="user_seq">
<constraints nullable="false" primaryKey="true"/>
</column>
</createTable>
我的实体:
@Entity
@Table(name = "user")
public class User {
@SequenceGenerator(name="USER_SEQ",sequenceName="USER_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SEQ")
@Id
protected long id;
}
在Spring Boot中,验证步骤未通过。Hibernate抛出以下异常:
Schema-validation: missing sequence [public.user_seq]
LiquiBase执行了以下查询语句:
CREATE SEQUENCE public.user_seq INCREMENT BY 1 MINVALUE 1
Sequence user_seq created
当我将ddl-auto
更改为update时,hibernate执行以下查询:create sequence public.user_seq start 1 increment 50
然后JDBC抛出异常:Sequence "user_seq" already exists; SQL statement:
。
如何在LiquiBase中正确创建序列?
- @Edit1 - 我尝试在实体中使用小写:USER_SEQ -> user_seq - 没有帮助
jdbc:h2:mem:testdb
I have whole db in memory so create table starts every time when spring boot starts, changeset is correctly executed. Look at my question(higher) I wrote that LiquiBase execute this SQL:CREATE SEQUENCE public.user_seq INCREMENT BY 1 MINVALUE 1
- dramcio