Spring-Session with JDBC configuration: Table 'test.spring_session' doesn't exist

Spring Session ships with database schema scripts for most major RDBMS's (located in org.springframework.session.jdbc package), but the creation of database tables for Spring Session JDBC supports needs to be taken care of by the users themselves.

The provided scripts can be used untouched, however some users may choose to modify them to fit their specific needs, using the provided scripts as a reference.

An option would be to use a database migration tool, such as Flyway, to handle the creation of database tables.

Since you're using Spring Boot, it might be of your interest that there is a pending PR to add support for automatic initialization of Spring Session JDBC schema: https://github.com/spring-projects/spring-boot/pull/5879

If the documentation misled you into thinking the tables should be created automatically by Spring Session itself, consider reporting the issue so we can update the documentation if necessary: https://github.com/spring-projects/spring-session/issues


At least as of now, you don't have to create tables manually.

In my test, tables were created automatically after adding the following line into the file application.properties when this file appears like shown above.

spring.session.jdbc.initialize-schema=always

I found this beautiful line from the following stackoverflow page.

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.spring_session' doesn't exist - Spring Boot

I am sorry that I don't know if it was necessary to create tables manually in 2016 or 2017. I will update this answer when I get to know this or get to have some more fruitful related information. I am just wishing that nobody will be led to an idea that automatic creation of session tables is impossible with the lastest Spring Framework version of 2019 or later.