当前位置: 首页 > 知识库问答 >
问题:

Liquibase-更新本机MS SQL脚本

南门魁
2023-03-14

我正在使用liquibase更新数据库。

我有文件changelog-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>

在resource/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

错误:

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会有问题?

共有1个答案

许彦
2023-03-14

请查看以下页面:http://www.liquibase.org/documentation/changes/sql.html以了解endDelimiter和splitStatements参数。

 类似资料:
  • 我有一个用LiquiBase创建DB模式的glassfish应用程序。我已经将相同的应用程序迁移到Spring Boot。我没有删除DB架构。当我部署Spring应用程序并运行liquibase脚本时,我得到 更新:这可能与changelog文件中存储的MD5总和有关吗?所以新应用程序计算的md5与旧应用程序计算的md5不匹配,脚本被触发,导致明显的异常? 多谢

  • 问题内容: 首先,有一点背景。我有一套Java应用程序,有些基于JPA,有些则没有。为了创建数据库,我目前正在使用Hibernates模式导出来为使用JPA的用户生成创建脚本。那些不使用JPA的人会手工生成脚本。然后使用ANT在应用程序安装过程中运行它们。对于更新,应用程序安装程序只需将更新脚本应用于数据库。 为了改善数据库更新的管理,我一直在研究Flyway和Liquibase。两者似乎几乎都可

  • 首先,一点背景。我有一组Java应用程序,有些基于JPA,有些不是。要创建我的数据库,我目前正在使用Hibernates模式导出为那些使用JPA的人生成创建脚本。那些不使用JPA的人我手动生成脚本。然后在应用程序安装期间使用ANT运行这些脚本。对于更新,应用程序安装程序只需将更新脚本应用于数据库。 为了改进数据库更新的管理,我一直在研究Flyway和Liquibase。这两个脚本似乎几乎都能满足我

  • 我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变

  • 问题内容: 这是我的文件 我想在数组字段“ b”中找到元素并更新整个对象。我尝试了此脚本,但它没有更新。有任何想法吗? 问题答案: 使用此代替:

  • 我们在webapp中使用liquibase 3.0.8已经有一段时间了,数据库更新是由Spring-liquibase bean在应用程序启动时应用的。我们决定从3.1、3.1.1、3.2.0到3.2.3,逐步更新我们的开发数据库,此时更新失败,出现校验和验证错误。我们尝试恢复到3.2.0,但得到了一组不同的校验和错误。我还尝试从3.0.8直接转到3.4.1(编写时的当前版本),并得到相同的校验和