【发布时间】:2015-02-17 05:23:24
【问题描述】:
我已经为我的多租户应用程序设置了一个迁移脚本。问题是。它只为我在参数上指定的第一个租户/模式生成脚本。这是我的 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)生成表。
这是一个错误吗?还是错过了什么?
【问题讨论】:
-
AFAIK
schemas属性允许您在 SQL 语句中切换模式。所以在这里你必须创建两次USER_ACCOUNT表,使用 2 个单独的脚本,每个模式一个。在这里,您可以读到只有第一个模式被视为默认模式:flywaydb.org/documentation/maven/migrate.html ... 所以您必须在尝试将迁移推送到非默认模式时指定。我也很想一次将迁移推送到两个多个模式中。一种用于开发的模式,一种用于测试的模式。仍在寻找解决方案;)
标签: java database maven migration flyway