【问题标题】:Liquibase removes semicolonsLiquibase 删除分号
【发布时间】:2018-08-07 14:07:30
【问题描述】:

我有一个带有一些插入语句的 liquibase 更改日志文件,我已经使用标签完成了这些语句,但是当我从更改日志(对于 SQL Server 数据库)生成 SQL 文件时,它会删除语句末尾的分号。在我的变更日志文件中,它看起来像这样:

<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

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

【问题讨论】:

    标签: sql database migration liquibase


    【解决方案1】:

    我发现了,我只需要在&lt;sql&gt;标签中添加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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多