Liquibase - 更新原生 MS SQL 脚本
Liquibase - update native MS SQL script
我正在使用 liquibase 更新数据库。
我有文件更新日志-master.xml,其中:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
<includeAll path="/src/main/resources/DBChangeLog/DDL/"/>
</databaseChangeLog>
在资源 /src/main/resources/DBChangeLog/DDL/ 我有一个带有脚本 MS SQL:
的文件
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CONFIG]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CONFIG](
[ID] [bigint] NOT NULL,
[DESCRIPTION] [varchar](255) NOT NULL,
[OPERATOR] [XML] NOT NULL
CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA]
) ON [DATA]
END
GO
SET ANSI_PADDING OFF
GO
当我 运行 maven 命令时我收到错误:mvn liquibase:update
错误:
src\main\resources\DBChangeLog\DDL\V2_20_0_0008__test.sql::raw::includeAll failed. Error: Incorrect syntax near 'GO'. [Failed SQL: SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CONFIG]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CONFIG](
[ID] [bigint] NOT NULL,
[DESCRIPTION] [varchar](255) NOT NULL,
[OPERATOR] [XML] NOT NULL
CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA]
) ON [DATA]
END
GO
SET ANSI_PADDING OFF
GO]
运行 典型的 MS SQL 脚本或 liquibase 是否可能有问题?
看看这个页面:http://www.liquibase.org/documentation/changes/sql.html
对于 endDelimiter 和 splitStatements 参数。
我正在使用 liquibase 更新数据库。
我有文件更新日志-master.xml,其中:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
<includeAll path="/src/main/resources/DBChangeLog/DDL/"/>
</databaseChangeLog>
在资源 /src/main/resources/DBChangeLog/DDL/ 我有一个带有脚本 MS SQL:
的文件SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CONFIG]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CONFIG](
[ID] [bigint] NOT NULL,
[DESCRIPTION] [varchar](255) NOT NULL,
[OPERATOR] [XML] NOT NULL
CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA]
) ON [DATA]
END
GO
SET ANSI_PADDING OFF
GO
当我 运行 maven 命令时我收到错误:mvn liquibase:update
错误:
src\main\resources\DBChangeLog\DDL\V2_20_0_0008__test.sql::raw::includeAll failed. Error: Incorrect syntax near 'GO'. [Failed SQL: SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CONFIG]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CONFIG](
[ID] [bigint] NOT NULL,
[DESCRIPTION] [varchar](255) NOT NULL,
[OPERATOR] [XML] NOT NULL
CONSTRAINT [PK_CONFIG] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA]
) ON [DATA]
END
GO
SET ANSI_PADDING OFF
GO]
运行 典型的 MS SQL 脚本或 liquibase 是否可能有问题?
看看这个页面:http://www.liquibase.org/documentation/changes/sql.html 对于 endDelimiter 和 splitStatements 参数。