You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:34:53