【发布时间】:2020-05-15 07:00:30
【问题描述】:
我在spring-session-jdbc 的spring_session 表上创建了一个具有外键约束的表。主要动机是 spring-session 将删除行,以便它会级联并删除与实际会话关联的条目。它变成了一个“只能在我的机器上工作”的问题,因为只有我在启动开发服务器时已经准备好了表。只有当其他人先注释掉表,初始化服务器,然后恢复并再次执行时,它才会起作用。否则,nested exception is java.sql.SQLException: Failed to open the referenced table 'spring_session'。
我认为解决方案是指定初始化 sql 文件的运行顺序(或依赖关系)。经过一番搜索,我找不到该设置,所以我在这里。
schema.sql:
drop table if exists foo;
create table if not exists foo (
sid char(36) not null,
foreign key (sid) references spring_session (session_id) on delete cascade,
-- other columns and constraints
);
可能的解决方法:
解决方法 #1:在 data.sql 中添加 alter table add constraint 语句,如 this。
解决方法 #2:获取 spring-session-jdbc 的 schema.sql 并将其放入我的 schema.sql,然后将 spring.session.jdbc.initialize-schema=never 设置为 application.properties。
【问题讨论】:
标签: spring spring-boot spring-session