Oracle SQLcl+Liquibase执行update时DATABASECHANGELOG_ACTIONS未插入数据
Liquibase搭配Oracle SQLcl时DATABASECHANGELOG_ACTIONS表未写入DDL的问题
使用Oracle SQLcl build 23.3.0.270.1251搭配Liquibase 4.18.0时遇到如下情况:
- 全量同步场景:通过
generate-schema和update将整个schema从一个环境同步到另一个时,DATABASECHANGELOG_ACTIONS表会正常写入执行的DDL指令,无异常。 - 增量同步场景:通过
diff-changelog从开发环境到生产环境生成了包含所需变更的changes.xml文件,执行update后表结构变更已生效,但DATABASECHANGELOG_ACTIONS表中没有写入对应的DDL语句;执行update-sql验证,输出结果里也未生成插入该表的语句。
生成的changes.xml内容
<?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd"> <changeSet author="ricardo (generated)" id="1698352210917-1"> <modifyDataType columnName="URL_SERVICO" newDataType="varchar(1000 CHAR)" tableName="URL_SERVICO"/> </changeSet> </databaseChangeLog>
update-sql执行结果
--Starting Liquibase at 17:30:58 (version 4.18.0 #5864 built at 2022-12-02 18:02+0000) -- Loaded 1 change(s) -- ********************************************************************* -- Update Database Script -- ********************************************************************* -- Change Log: v20231026r1714/changes.xml -- Ran at: 10/26/23, 5:30 PM -- Against: PML_DATA_TLIQUIBASE@jdbc:oracle:thin:@PDB_DES.WORLD -- Liquibase version: 4.18.0 -- ********************************************************************* -- Lock Database UPDATE PML_DATA_TLIQUIBASE.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'ZZZZ (111.11.0.1)', LOCKGRANTED = SYSTIMESTAMP WHERE ID = 1 AND LOCKED = 0; -- Changeset v20231026r1714/changes.xml::1698352210917-1::ricardo (generated) ALTER TABLE PML_DATA_TLIQUIBASE.URL_SERVICO MODIFY URL_SERVICO VARCHAR2(1000 CHAR); INSERT INTO PML_DATA_TLIQUIBASE.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('1698352210917-1', 'ricardo (generated)', 'v20231026r1714/changes.xml', SYSTIMESTAMP, 49, '8:ce272fb18fbb857080c5aeef643a9a5f', 'modifyDataType columnName=URL_SERVICO, tableName=URL_SERVICO', '', 'EXECUTED', NULL, NULL, '4.18.0', '8352268410'); -- Release Database Lock UPDATE PML_DATA_TLIQUIBASE.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1; Operation completed successfully. SQL>
内容的提问来源于stack exchange,提问作者Ricardo F
相关产品推荐
相关产品推荐

