java - Flyway 数据库迁移到多个模式

标签 java database maven migration flyway

我已经为我的 Multi-Tenancy 应用程序设置了一个迁移脚本。问题是。它只是为我在参数上指定的第一个租户/模式生成脚本。这是我的 sql 脚本

drop table if exists ADMIN_ACCOUNT cascade;

drop table if exists PERSON_NAME cascade;

drop table if exists USER_ACCOUNT cascade;

create table ADMIN_ACCOUNT (
    id int8 not null,
    created_date timestamp,
    PASSWORD varchar(255),
    USERNAME varchar(255),
    membershipType varchar(255),
    NAME_ID int8,
    primary key (id)
);

create table PERSON_NAME (
    id int8 not null,
    created_date timestamp,
    FIRST_NAME varchar(255),
    LAST_NAME varchar(255),
    MIDDLE_NAME varchar(255),
    account_id int8,
    primary key (id)
);

create table USER_ACCOUNT (
    id int8 not null,
    created_date timestamp,
    PASSWORD varchar(255),
    USERNAME varchar(255),
    ROLE varchar(255),
    TENANT_CODE varchar(255),
    NAME_ID int8,
    primary key (id)
);

alter table ADMIN_ACCOUNT
add constraint FK_fil1krx8k0osj713tg44ia0vu
foreign key (NAME_ID)
references PERSON_NAME;

alter table PERSON_NAME
add constraint FK_hc1g7pa0rseytw9o1pcuo0mpw
foreign key (account_id)
references USER_ACCOUNT;

alter table USER_ACCOUNT
add constraint FK_ib2pk4at20vxm3onaoro6ry2r
foreign key (NAME_ID)
references PERSON_NAME;

这是我输入到 flyway 的命令 mvn compile flyway:migrate -Dflyway.schemas=tenant3,tenant4,tenant5 -Dflyway.baselineOnMigrate=true

它只为第一个租户 tenant3 生成表。

这是一个错误吗?还是遗漏了什么?

最佳答案

要创建多个相同的模式,您必须为每个模式调用一次 Flyway,并将 flyway.schemas 属性设置为正确的值。然后,Flyway 会将正确的模式设置为默认模式,让您可以原封不动地运行迁移脚本(只要您不为对象名称添加前缀)。

关于java - Flyway 数据库迁移到多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546313/

相关文章:

java - JSF <c :if <c:choose problem

java - 在java中使用正则表达式进行模式搜索

java - Tomcat 找不到包含过滤器的自定义库

java - Android:尝试使用 GregorianCalendar 类从 12 月 21 日开始倒计时

java - 如何使用 Struts 2 在 JSP 中打印 session 属性

mysql - SQL 帮助 : How do count by a group, 日期何时更新?

sql - 什么时候需要对主键和外键施加约束?

php - 无法关注其他用户

java - 如何将 Maven 生成的 GAE 框架转变为 2 模块应用程序?

java - Spring多对多关系的问题