我正在Java Spring中开发一个简单的RESTfull服务并使用JDBCTemplate。
但是,我遇到运行时错误,我不明白。它抱怨SPRING_SESSION表不存在,但我认为Spring应该能够根据需要创建必要的表。
application.properties:
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/getfit?useSSL=false
spring.datasource.username=root
spring.datasource.password=***
例外:
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [DELETE FROM SPRING_SESSION WHERE EXPIRY_TIME < ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'getfit.SPRING_SESSION' doesn't exist
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
某些进程尝试从不存在的表中删除记录时触发异常。
手动创建表会导致更多错误(不是现有列)。设置
hibernate.ddl-auto=update
也没有帮助。
另外,我有 修改MySQL配置以允许大写字符,这也没有帮助。
有趣的是,这个问题发生在我从github格式化我的操作系统和克隆项目之后。在一切正常之前。
你有什么想法会出错吗?如果您需要我向您展示一些代码,请告诉我。
感谢您查看此内容:)
答案 0 :(得分:0)
Spring会话创建一个表以将会话存储在数据库中。由于所需的表不存在,因此会引发错误。
这是您可以参考的链接
https://sivalabs.in/2018/02/session-management-using-spring-session-jdbc-datastore/
答案 1 :(得分:0)
尝试将初始化模式设置为始终:
spring.session.jdbc.initialize-schema: always