STUDY/Spring
Spring Boot | spring-session-jdbc 테이블 생성이 안 될 때..
개미606
2021. 6. 10. 15:33
- Gradle 7.0.2
- Java 11
- Spring Boot 2.5.0
- H2 Database
build.gradle
spring-session-jdbc
는 세션을 데이터베이스에 저장하도록 한다.
implementation 'org.springframework.session:spring-session-jdbc'
application.yml
spring.session.stor-type= jdbc
로 설정해주어야 한다. 이렇게 하면 프로젝트를 실행할 때 SPRING_SESSION
테이블과 SPRING_SESSION_ATTRIBUTES
테이블이 자동으로 생성된다.
spring:
session:
store-type: jdbc
하지만..?
아무리해도 자동으로 생성되지 않았음.. spring.session.jdbc.initialize-schema= always
로 설정해주니 생성됐다.
spring:
session:
store-type: jdbc
jdbc.initialize-schema: always
만약.. 그래도 안 된다면?
수동..생성하자..
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 LONGVARBINARY 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
);