首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:重复键值违反唯一约束"spring_session_attributes_pk"\n Detail: key (session_primary_id,attribute_name)

错误:重复键值违反唯一约束"spring_session_attributes_pk"\n Detail: key (session_primary_id,attribute_name)
EN

Stack Overflow用户
提问于 2021-11-22 02:20:23
回答 1查看 636关注 0票数 0

目前,我正在使用:

  • Spring引导2.2.2
  • Spring 2.5.0
  • Spring内核2.5.0

有时,在访问我的端点时会出现错误,下面是堆栈跟踪,这是在从以下位置升级我的库之后发生的:

  • 弹簧引导2.1.7
  • spring jdbc 2.1.8
  • spring内核2.1.8

处理DataIntegrityViolationException: PreparedStatementCallback;

代码语言:javascript
运行
复制
SQL [INSERT INTO SPRING_SESSION_ATTRIBUTES(SESSION_PRIMARY_ID, ATTRIBUTE_NAME, ATTRIBUTE_BYTES) SELECT PRIMARY_ID, ?, ? FROM SPRING_SESSION WHERE SESSION_ID = ?];
ERROR: duplicate key value violates unique constraint \"spring_session_attributes_pk\"
    Detail: Key (session_primary_id, attribute_name)=(a9427ef5-92a4-4845-8769-e034c3b50b70, SPRING_SECURITY_CONTEXT) already exists.; nested exception is org.postgresql.util.PSQLException: 

ERROR: duplicate key value violates unique constraint \"spring_session_attributes_pk\"
    Detail: Key (session_primary_id, attribute_name)=(a9427ef5-92a4-4845-8769-e034c3b50b70, SPRING_SECURITY_CONTEXT) already exists.
    org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT INTO SPRING_SESSION_ATTRIBUTES(SESSION_PRIMARY_ID, ATTRIBUTE_NAME, ATTRIBUTE_BYTES) SELECT PRIMARY_ID, ?, ? FROM SPRING_SESSION WHERE SESSION_ID = ?]; 

ERROR: duplicate key value violates unique constraint \"spring_session_attributes_pk\"
    Detail: Key (session_primary_id, attribute_name)=(a9427ef5-92a4-4845-8769-e034c3b50b70, SPRING_SECURITY_CONTEXT) already exists.; nested exception is org.postgresql.util.PSQLException:

ERROR: duplicate key value violates unique constraint \"spring_session_attributes_pk\"
    Detail: Key (session_primary_id, attribute_name)=(a9427ef5-92a4-4845-8769-e034c3b50b70, SPRING_SECURITY_CONTEXT) already exists.
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:243)

以下是我的会话表:

代码语言:javascript
运行
复制
CREATE TABLE APP_SPRING_SESSION (
        PRIMARY_ID CHAR(36) NOT NULL,
        SESSION_ID CHAR(36) NOT NULL,
        CREATION_TIME BIGINT NOT NULL,
        LAST_ACCESS_TIME BIGINT NOT NULL,
        MAX_INACTIVE_INTERVAL INT NOT NULL,
        EXPIRY_TIME BIGINT NOT NULL,
        PRINCIPAL_NAME VARCHAR(100),
        CONSTRAINT APP_SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
);

CREATE UNIQUE INDEX APP_SPRING_SESSION_IX1 ON APP_SPRING_SESSION (SESSION_ID);
CREATE INDEX APP_SPRING_SESSION_IX2 ON APP_SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX APP_SPRING_SESSION_IX3 ON APP_SPRING_SESSION (PRINCIPAL_NAME);

CREATE TABLE APP_SPRING_SESSION_ATTRIBUTES (
       SESSION_PRIMARY_ID CHAR(36) NOT NULL,
       ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
       ATTRIBUTE_BYTES BYTEA NOT NULL,
       CONSTRAINT APP_SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
       CONSTRAINT APP_SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES APP_SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
);

有人知道如何解决这个问题吗?

EN

Stack Overflow用户

发布于 2021-11-26 10:48:27

这些错误意味着数据库中已经有带有这些键的记录。您可以清除数据库或更改键和插入查询。

票数 -1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70060241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档