gpt4 book ai didi

java - 唯一索引或主键违规 : "PRIMARY KEY ON PUBLIC.xxx"; SQL statement

转载 作者:行者123 更新时间:2023-11-29 08:22:49 25 4
gpt4 key购买 nike

每当我的应用程序启动时,我都会收到以下错误消息:

Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.SERMON_SESSION(ID)"; SQL statement:
INSERT INTO SERMON_SESSION (id, session_enum) VALUES ('1', 'SUN_MRN'), ('2', 'SUN_EVE'), ('3', 'TUE_BIB'), ('4', 'FRI_BIB'), ('5', 'WKD_CNF') [23505-197]

我该如何解决这个问题?我必须自己分配布道 session ID,因为它会在后面的专栏中使用。

application.properties

spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:mem:erc;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.initialization-mode=embedded
spring.jpa.properties.hibernate.hbm2ddl.import_files=classpath://resources/data.sql
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.hbm2ddl.import_files_sql_extractor=org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor
logging.level.com.erc.api.*=DEBUG
logging.level.org.hibernate=OFF
logging.level.org.hibernate.SQL=INFO
logging.level.org.hibernate.type.descriptor.sql=INFO
logging.level.org.jaudiotagger=WARN
spring.servlet.multipart.max-file-size=60MB
spring.servlet.multipart.max-request-size=60MB
application.sermon_path=classpath://resources/files/sermons/}

SermonSession.java

@Table(name = "sermon_session", uniqueConstraints = @UniqueConstraint(columnNames = {"id", "sessionEnum"}))
@Entity
public class SermonSession {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(updatable = false, nullable = false, unique = true)
private int id;
@Enumerated(EnumType.STRING)
@Column(unique = true)
private SessionEnum sessionEnum;

public SermonSession(String session) {
setSessionEnum(session);
}

public SermonSession() {
this.sessionEnum = null;
}

public String toString() {
return String.format("{ id: %d, session_enum: %s }", getId(), getSessionEnum());
}

String getSessionEnum() {
return this.sessionEnum.getSession();
}

private void setSessionEnum(String session) {
this.sessionEnum = SessionEnum.fromSession(session);
}

private int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

data.sql

INSERT INTO SERMON_SESSION (id, session_enum)
VALUES ('1', 'SUN_MRN'),
('2', 'SUN_EVE'),
('3', 'TUE_BIB'),
('4', 'FRI_BIB'),
('5', 'WKD_CNF');

将 data.sql 更改为:

INSERT INTO SERMON_SESSION (session_enum)
VALUES ('SUN_MRN'),
('SUN_EVE'),
('TUE_BIB'),
('FRI_BIB'),
('WKD_CNF');

产生以下错误信息:

Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "UK_AA7KWY8HO9GLHF1VI4HDB61X8_INDEX_8 ON PUBLIC.SERMON_SESSION(SESSION_ENUM) VALUES ('SUN_MRN', 1)"; SQL statement:
INSERT INTO SERMON_SESSION (session_enum) VALUES ('SUN_MRN'), ('SUN_EVE'), ('TUE_BIB'), ('FRI_BIB'), ('WKD_CNF') [23505-197]

最佳答案

@GeneratedValue(strategy = GenerationType.IDENTITY) 将允许自动生成唯一 ID,无需您自己将其放在那里。

下面这些应该绰绰有余了

DELETE FROM SERMON_SESSION;
INSERT INTO SERMON_SESSION (session_enum)
VALUES ('SUN_MRN'),
('SUN_EVE'),
('TUE_BIB'),
('FRI_BIB'),
('WKD_CNF');

关于java - 唯一索引或主键违规 : "PRIMARY KEY ON PUBLIC.xxx"; SQL statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com