Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 液化酶发生器Angelog can';t在不同的模式中处理相同的表名_Sql Server_Liquibase - Fatal编程技术网

Sql server 液化酶发生器Angelog can';t在不同的模式中处理相同的表名

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

我正在使用MSSQL并评估用于迁移的Liquibase。所以,我想使用generateChangeLog生成我的第一个变更日志。我的数据库有两个模式:默认模式和另一个称为“blah”的模式。我在每个模式中都有一个表,表名相同:
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