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

Liquibase删除分号

沈骞仕
2023-03-14

我有一个liquibase changelog文件,其中包含一些插入语句,我已经用标记完成了这些操作,但不知何故,当我从changelog(对于SQL Server数据库)生成SQL文件时,它删除了语句末尾的分号。在我的changelog文件中,它如下所示:

<changeSet author="Ferid (generated)" id="1528876614155-371-MSSQL-58">
   <preConditions onFail="MARK_RAN" onSqlOutput="TEST">
      <dbms type="mssql" />
   </preConditions>
   <sql>
        BEGIN TRAN;
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1);
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2);
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3);
        commit;
   </sql>
   <rollback/>
</changeSet>  

但是由此生成的SQL文件如下所示:

-- Changeset C:/Users/Ferid/Documents/Box Sync/PRIVATE_Ferid/liquibase-3.5.5-bin/sdk/workspace/changelog/com/example/newChangelogModInserts.xml::1528876614155-371-MSSQL-58::Ferid (generated)
BEGIN TRAN
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1)
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2)
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3)
GO
commit
GO

为什么会发生这种情况,我可以做些什么来防止它?

共有1个答案

单于越
2023-03-14

我发现了,我只需要在 标记中添加splitstatements=“false”,它根本没有格式化SQL语句:

<changeSet author="Ferid (generated)" id="1528876614155-371-MSSQL-58">
   <preConditions onFail="MARK_RAN" onSqlOutput="TEST">
      <dbms type="mssql" />
   </preConditions>
   <sql splitStatements="false">
    BEGIN TRAN;
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1);
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2);
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3);
    commit;
   </sql>
   <rollback/>
</changeSet> 
 类似资料:
  • 假设我们在 “contact-form” 分支上的工作已经完成了。并且我们也已经把最终的改动整合到了 “master” 分支。现在我们就不再需要这个分支了。把它删除掉吧: $ git branch -d contact-form 为了保持一致,我们也有必要删除它所对应的远程分支。附加上一个 “-r” 参数就可以了: $ git branch -dr origin/contact-form

  • 既然issue1分支的内容已经顺利地合并到master分支了,现在可以将其删除了。 在branch命令指定-d选项执行,以删除分支。 $ git branch -d <branchname> 执行以下的命令以删除issue1分支。 $ git branch -d issue1 Deleted branch issue1 (was b2b23c4). issue1分支被删除了。您可以用branch命

  • 删除分组       点击删除按钮,弹出删除确认框,点击确定,删除分组成功。

  • 我们依旧简单的删除分组 try { // 通过 分组ID 查找分组 $group = Sentry::findGroupById(1); // 删除分组 $group->delete(); } catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e) { echo '分组不存在'; }

  • 我是Postgresql的新手,不知道如何管理分区表 我有基于日期的分区表。在插入数据之前,触发器检查日期并将其放入相应的子表中 例如 2014年11月15日-插入名为11-15-2014_log的表格 2014年11月16日-插入名为11-16-2014_log的表格 现在我想创建一个函数来删除旧的子表,例如,超过90天的表。我应该根据表名查找并删除子表(因为它包含创建日期),还是应该在主表中查

  • 接口说明 删除场景分享 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/scene/share/v1.0.0/deleteShare 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN shareId string