Sql server 液化酶发生器Angelog can';t在不同的模式中处理相同的表名
我正在使用MSSQL并评估用于迁移的Liquibase。所以,我想使用generateChangeLog生成我的第一个变更日志。我的数据库有两个模式:默认模式和另一个称为“blah”的模式。我在每个模式中都有一个表,表名相同:Sql server 液化酶发生器Angelog can';t在不同的模式中处理相同的表名,sql-server,liquibase,Sql Server,Liquibase,我正在使用MSSQL并评估用于迁移的Liquibase。所以,我想使用generateChangeLog生成我的第一个变更日志。我的数据库有两个模式:默认模式和另一个称为“blah”的模式。我在每个模式中都有一个表,表名相同:test1。我跑: liquibase--dataOutputDirectory=./data/--schemas=blah,dbo--changeLogFile=changelog.mssql.sql--includeSchema=true generateChangeL
test1
。我跑:
liquibase--dataOutputDirectory=./data/--schemas=blah,dbo--changeLogFile=changelog.mssql.sql--includeSchema=true generateChangeLog
完成后,我查看了生成的SQL:
-- liquibase formatted sql
-- changeset bmccord2:1604068236633-1
CREATE TABLE blah.test1 (id int NOT NULL, name varchar(255), CONSTRAINT PK__test1__3213E83F4F883C7C PRIMARY KEY (id));
-- changeset bmccord2:1604068236633-2
INSERT INTO blah.test1 (id, name) VALUES (1, 'Brian'),(2, 'Kim');;
-- changeset bmccord2:1604068236633-3
CREATE TABLE dbo.test1 (id int NOT NULL, name varchar(255), CONSTRAINT PK__test1__3213E83F6FD50901 PRIMARY KEY (id));
-- changeset bmccord2:1604068236633-4
INSERT INTO dbo.test1 (id, name) VALUES (1, 'Brian'),(2, 'Kim');;
起初,它看起来不错,但后来我注意到插入blah.test1表中的数据并不是该表中的实际数据。该表中的数据为:
"id","name"
"1","Miranda"
"2","Kyle"
因此,它对两个表都使用第二个表的数据。它还在数据文件夹中仅生成一个.csv文件
显然,这不是我真正的数据库。我把问题简化为引起问题的最小因素
有什么方法可以让它正常工作吗?检查它们的状态:
按照Liquibase的设计方式,它一次只能使用一个模式
如果它适合您的用例,您可以尝试定义两个单独的迁移并逐个应用它们,例如:
liquibase --dataOutputDirectory=./data/ --schemas=blah --changeLogFile=changelog.blah.mssql.sql --includeSchema=true generateChangeLog
liquibase --dataOutputDirectory=./data/ --schemas=dbo --changeLogFile=changelog.dbo.mssql.sql --includeSchema=true generateChangeLog
或者,如果您希望为两个数据库应用完全相同的变更日志,您可以使用相同的变更日志文件调用它两次。在这种情况下,只需要调整--schema。(--schemas=dbo
和--schemas=blah
)