gpt4 book ai didi

java - 违反唯一约束 - 调试

转载 作者:行者123 更新时间:2023-12-02 02:25:50 26 4
gpt4 key购买 nike

我们有一个运行多年的应用程序,我们也使用相同的 Oracle 数据库。但是将我们的数据库从一台主机迁移到另一台主机。

数据库:ORACLE

现在突然我们遇到了以下异常,

“org.springframework.dao.DataIntegrityViolationException: ORA-00001: unique constraint (YYY.XXX_LOG_PK) violated; 
SQL [n/a]; constraint [YYY.XXX_LOG_PK]; nested exception is org.hibernate.exception.ConstraintViolationException: ORA-00001: unique constraint (YYY.XXX_LOG_PK) violated”

代码:

@SequenceGenerator(name = "TT_SEQUENCE_GENERATOR", sequenceName = "YYY.XXX_LOG_SEQ")
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TT_SEQUENCE_GENERATOR")
@Column(name = "ID")
public Long getId() {
return this.id;
}

数据库中的序列:

CREATED 07-NOV-17
LAST_DDL_TIME 07-NOV-17
SEQUENCE_OWNER TT
SEQUENCE_NAME YYY.XXX_LOG_SEQ
MIN_VALUE 1
MAX_VALUE 999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 0
LAST_NUMBER 75305

问题:当我们尝试通过 JPA 代码插入一些记录时,我们遇到了上述异常,但是当我尝试使用sequence.nextval 将一些记录插入数据库时​​,它没有给出任何异常。

我是否可以通过调试来找出异常情况?我还尝试了 show_sql - 我也无法找到解决方案,因为这不会在控制台中打印下一个序列号

如果您知道解决方案,请为我指出正确的方向。

最佳答案

自增序列遇到唯一约束冲突的最常见场景是数据迁移时,导致数据的最大值超过序列值。

Firstly query the sequanence current values:

SELECT seqname.CURRVAL FROM dual

And then modify the sequence value to make sure the sequence's nextval exceeds the current maximum value of the data.

ALTER SEQUENCE seqname INCREMENT BY XXXXXX;
SELECT seqname.NEXTVAL FROM dual;

关于java - 违反唯一约束 - 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784287/

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