SpringBoot - JDBC with Session / Error : spring_session table does not exist

2020. 2. 16. 00:15개발/시행착오

SpringBoot : 2.2.2.RELEASE

spring-session-jdbc : 2.2.0.RELEASE

 

compile('org.springframework.session:spring-session-jdbc:') 로 spring-session-jdbc를 추가.

 

Library에서 spring-session-jdbc를 찾아 들여다 보면,

org.springframework.session.jdbc 내부에 Session 데이터를 저장하기 위한 Table 쿼리문들이 있다.

 

org.springframework.session.jdbc
schema-postgresql.sql 파일

 

 

 

 

이 sql 파일중에 내가 연결하는 DB와 맞는 쿼리를 실행시켜서 Table을 만들고 @EnableJdbcHttpSession 로 연결시켜주면 HttpSession에 setAttribute로 저장하면 DB에 자동으로 저장되고 심지어 Expire Time 까지 알아서 관리해주는 마법같은 일이 일어난다! 

 

그런데 

 

나는 application.properties 에 spring.session.jdbc.initialize-schema=always 와 같은

spring session 세팅만 하면 되는줄 알았다. 구글에 아무리 찾아봐도 이렇게 하라고 나와있었다.

심지어 공식 Repo에서도 다음과 같이 안내하고 있었다.

 

https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-jdbc.html

 

Spring Session - Spring Boot

Before you use Spring Session, you must update your dependencies. We assume you are working with a working Spring Boot web application. If you use Maven, you must add the following dependencies: pom.xml org.springframework.session spring-session-jdbc Sprin

docs.spring.io

 

 

Spring Repo도 찾아보고 구글도 열심히 뒤져봤지만 답이 나오지 않았다.

혹시나 이유를 알게 되면 댓글이라도 달아주세요...

 

도대체 왜 안되는지 모르겠지만.. 약간의 꼼수를 써서 해결했다.

spring-session-jdbc를 쓰지 않고 datasource에 우겨넣어서 해결했다. 이렇게 하는게 맞는지 모르겠지만..

 

application.properties

spring.datasource.initialization-mode=always
spring.datasource.schema=classpath:org/springframework/session/jdbc/schema-postgresql.sql