簡體   English   中英

如何使用 JDBC 在 spring-session 中初始化模式

[英]How to initialize schema in spring-session with JDBC

我在 Mysql 5.7 中使用 Spring Boot 2.0.x、Hibernate 和 Spring Session Jdbc。 我在開發環境下工作,所以 Hibernate 被配置為每次都生成模式:

spring.jpa.hibernate.ddl-auto=create-drop

它工作正常,但我在使用 Spring Session 時遇到問題......我嘗試了 set initialize-schema ,但它不起作用。

spring.session.jdbc.initialize-schema=always

是否可以自動生成完整模式(所有實體和 SPRING_SESSION)?

它不適用於 MySQL 和 H2(我嘗試了embedded選項)

我正在描述這些步驟。它對我有用。

1- 在您的 pom 文件中添加依賴項。

<dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-jdbc</artifactId>
    </dependency>

2-在“資源”文件下以相同路徑和相同名稱在項目中添加sql文件。

路徑:/org/springframework/session/jdbc/schema-mysql.sql

模式-mysql.sql

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)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;

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 BLOB 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
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;

我從官方 spring github 帳戶獲得了 sql 文件。

https://github.com/spring-projects/spring-session/blob/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc/schema-mysql.sql

3-將以下屬性添加到 application.properties

spring.session.jdbc.initialize-schema=always
spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-mysql.sql

如果它再次不起作用,請告訴我。就像我說的,它對我有用。 在此處輸入圖像描述

application.properties中嘗試此設置

spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always //spring will create required tables for us
spring.session.timeout.seconds=900

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM