创建会话时出现以下异常。
INSERT INTO SPRING_SESSION
(
SESSION_ID,
CREATION_TIME,
LAST_ACCESS_TIME,
MAX_INACTIVE_INTERVAL,
PRINCIPAL_NAME
)
VALUES (?, ?, ?, ?, ?)];
无法将值NULL插入列' PRIMARY_ID'
以下是我的架构详细信息:
CREATE TABLE 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 SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
);
CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);
CREATE TABLE SPRING_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
ATTRIBUTE_BYTES IMAGE NOT NULL,
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY
(SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY
(SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
);
CREATE INDEX SPRING_SESSION_ATTRIBUTES_IX1
ON SPRING_SESSION_ATTRIBUTES (SESSION_PRIMARY_ID);
答案 0 :(得分:2)
这个问题的解决方案很简单,在spring-session jar文件中,有org / springframework / session / jdbc文件夹,你可以在eclipse中查看。
在此文件夹下,您可以获取schema-sqlserver.sql文件,您只需要为春季会话的正确架构执行此文件。
答案 1 :(得分:0)
您正在将列PRIMARY_ID
设置为主键
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
由于它不是计算列或自动增量列,因此必须在每个插入上为此列指定一个值。
但是希望不填充所有行的列,然后更改设计并从该列中删除PRIMARY KEY。
然后,您可能会添加一个带有IDENTITY的新列,以便自动分配。
您可以使用此
删除约束ALTER TABLE SPRING_SESSION
DROP CONSTRAINT SPRING_SESSION_PK
然后添加新主键
ALTER TABLE SPRING_SESSION
ADD SeqNo INT IDENTITY(1,1) CONSTRAINT SPRING_SESSION_PK PRIMARY KEY