2016-09-21 7 views
0

私はデータベースを更新するためにliquibaseを使用しています。Liquibase - ネイティブMS SQLスクリプトの更新

私はとのファイルのchangelog-master.xmlあります

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で一つのファイルを持っている/リソース/ srcに/メイン/リソース/ DBChangeLog/DDLに

<?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> 

をMVN LiquiBaseを:更新

ERROR:

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] 
0123私はMavenのコマンドを実行すると、私はエラーを受信しました

典型的なMS SQLスクリプトを実行することは可能ですか、それともリキベースに問題がありますか?

+0

'GO'はSQL文ではないため、JDBCを介して実行されるスクリプトには入れることはできません。 –

答えて

2

endDelimiterおよびsplitStatementsパラメータの場合は、http://www.liquibase.org/documentation/changes/sql.html をご覧ください。

+0

問題は、 "SET QUOTED_IDENTIFIER ON" "SET ANSI_PADDING ON"にあります。 MS Server Management Studioでこのスクリプトを実行できるのは不思議です。 – Alburnus

+0

JDBCで 'set'コマンドがサポートされていない可能性がありますので、Liquibaseはそれを実行できません。この問題は、Oracleデータベース用の 'set' sqlplus命令で得られます。 – dbf

関連する問題