Skip to Main Content

SQLcl: MCP Server & SQL Prompt

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SQLcl Version 25.3.1.311.1257 not updating columns on tables when using liquibase

Scott H.3 days ago

I noticed that when I add a column to a table now, when i apply the new changelog the column does not get added

DB Version: 19.28
SQLcl Version: 25.3.1.311.1257
Client Version: MS Windows 11

I created a test schema and simply

create table test_schema.test_table 
( 
id number generated always as identity, 
name varchar2(100) 
);

Then I created my changelog with the following command

lb generate-db-object -object-type table -object-name test_table -ovf
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
 xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:n0="http://www.oracle.com/xml/ns/dbchangelog-ext"
 xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
 <changeSet id="b7414746b5b1c5ed648be501717df1ed85c23366" author="(TEST_SCHEMA)-Generated" failOnError="true"    runOnChange="true"  runAlways="false"  runInTransaction="false"  >
  <n0:createSxmlObject objectName="TEST_TABLE" objectType="TABLE" ownerName="TEST_SCHEMA"  replaceIfExists="false" >
    <n0:source><![CDATA[
  <TABLE xmlns="http://xmlns.oracle.com/ku" version="1.0">
   <SCHEMA>TEST_SCHEMA</SCHEMA>
   <NAME>TEST_TABLE</NAME>
   <RELATIONAL_TABLE>
      <COL_LIST>
         <COL_LIST_ITEM>
            <NAME>ID</NAME>
            <DATATYPE>NUMBER</DATATYPE>
            <IDENTITY_COLUMN>
               <SCHEMA>TEST_SCHEMA</SCHEMA>
               <GENERATION>ALWAYS</GENERATION>
               <START_WITH>1</START_WITH>
               <INCREMENT>1</INCREMENT>
               <MINVALUE>1</MINVALUE>
               <MAXVALUE>9999999999999999999999999999</MAXVALUE>
               <CACHE>20</CACHE>
            </IDENTITY_COLUMN>
            <NOT_NULL></NOT_NULL>
         </COL_LIST_ITEM>
         <COL_LIST_ITEM>
            <NAME>NAME</NAME>
            <DATATYPE>VARCHAR2</DATATYPE>
            <LENGTH>100</LENGTH>
            <COLLATE_NAME>USING_NLS_COMP</COLLATE_NAME>
         </COL_LIST_ITEM>
      </COL_LIST>
      <DEFAULT_COLLATION>USING_NLS_COMP</DEFAULT_COLLATION>
      <PHYSICAL_PROPERTIES>
         <HEAP_TABLE>
            <SEGMENT_ATTRIBUTES>
               <SEGMENT_CREATION_IMMEDIATE></SEGMENT_CREATION_IMMEDIATE>
               <PCTFREE>10</PCTFREE>
               <PCTUSED>40</PCTUSED>
               <INITRANS>1</INITRANS>
               <MAXTRANS>255</MAXTRANS>
               <STORAGE>
                  <INITIAL>65536</INITIAL>
                  <NEXT>1048576</NEXT>
                  <MINEXTENTS>1</MINEXTENTS>
                  <MAXEXTENTS>2147483645</MAXEXTENTS>
                  <PCTINCREASE>0</PCTINCREASE>
                  <FREELISTS>1</FREELISTS>
                  <FREELIST_GROUPS>1</FREELIST_GROUPS>
                  <BUFFER_POOL>DEFAULT</BUFFER_POOL>
                  <FLASH_CACHE>DEFAULT</FLASH_CACHE>
                  <CELL_FLASH_CACHE>DEFAULT</CELL_FLASH_CACHE>
               </STORAGE>
               <TABLESPACE>USERS</TABLESPACE>
               <LOGGING>Y</LOGGING>
            </SEGMENT_ATTRIBUTES>
            <COMPRESS>N</COMPRESS>
         </HEAP_TABLE>
      </PHYSICAL_PROPERTIES>
   </RELATIONAL_TABLE>
</TABLE>]]></n0:source>
      </n0:createSxmlObject>
 </changeSet>
</databaseChangeLog>

And applied to a test db, and it created the table

SQL> lb update -chf controller.xml
--Starting Liquibase at 2025-11-13T10:41:24.113415600 using Java 21.0.2 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)
Running Changeset: test_table_table.xml::b7414746b5b1c5ed648be501717df1ed85c23366::(TEST_SCHEMA)-Generated
Table "TEST_SCHEMA"."TEST_TABLE" created.
UPDATE SUMMARY
Run:                          1
Previously run:               0
Filtered out:                 0
-------------------------------
Total change sets:            1
Liquibase: Update has been successful. Rows affected: 1

Operation completed successfully.
SQL> describe test_table
Name    Null?       Type
_______ ___________ ________________
ID      NOT NULL    NUMBER
NAME                VARCHAR2(100)
SQL>

Then I added a column to the table and regenerated the changelog

alter table test_schema.test_table 
add (name2 varchar2(100))
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
 xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:n0="http://www.oracle.com/xml/ns/dbchangelog-ext"
 xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
 <changeSet id="eba4edcc742babba8e0bc8e3381ab62a2f2f08be" author="(TEST_SCHEMA)-Generated" failOnError="true"    runOnChange="true"  runAlways="false"  runInTransaction="false"  >
  <n0:createSxmlObject objectName="TEST_TABLE" objectType="TABLE" ownerName="TEST_SCHEMA"  replaceIfExists="false" >
    <n0:source><![CDATA[
  <TABLE xmlns="http://xmlns.oracle.com/ku" version="1.0">
   <SCHEMA>TEST_SCHEMA</SCHEMA>
   <NAME>TEST_TABLE</NAME>
   <RELATIONAL_TABLE>
      <COL_LIST>
         <COL_LIST_ITEM>
            <NAME>ID</NAME>
            <DATATYPE>NUMBER</DATATYPE>
            <IDENTITY_COLUMN>
               <SCHEMA>TEST_SCHEMA</SCHEMA>
               <GENERATION>ALWAYS</GENERATION>
               <START_WITH>1</START_WITH>
               <INCREMENT>1</INCREMENT>
               <MINVALUE>1</MINVALUE>
               <MAXVALUE>9999999999999999999999999999</MAXVALUE>
               <CACHE>20</CACHE>
            </IDENTITY_COLUMN>
            <NOT_NULL></NOT_NULL>
         </COL_LIST_ITEM>
         <COL_LIST_ITEM>
            <NAME>NAME</NAME>
            <DATATYPE>VARCHAR2</DATATYPE>
            <LENGTH>100</LENGTH>
            <COLLATE_NAME>USING_NLS_COMP</COLLATE_NAME>
         </COL_LIST_ITEM>
         <COL_LIST_ITEM>
            <NAME>NAME2</NAME>
            <DATATYPE>VARCHAR2</DATATYPE>
            <LENGTH>100</LENGTH>
            <COLLATE_NAME>USING_NLS_COMP</COLLATE_NAME>
         </COL_LIST_ITEM>
      </COL_LIST>
      <DEFAULT_COLLATION>USING_NLS_COMP</DEFAULT_COLLATION>
      <PHYSICAL_PROPERTIES>
         <HEAP_TABLE>
            <SEGMENT_ATTRIBUTES>
               <SEGMENT_CREATION_IMMEDIATE></SEGMENT_CREATION_IMMEDIATE>
               <PCTFREE>10</PCTFREE>
               <PCTUSED>40</PCTUSED>
               <INITRANS>1</INITRANS>
               <MAXTRANS>255</MAXTRANS>
               <STORAGE>
                  <INITIAL>65536</INITIAL>
                  <NEXT>1048576</NEXT>
                  <MINEXTENTS>1</MINEXTENTS>
                  <MAXEXTENTS>2147483645</MAXEXTENTS>
                  <PCTINCREASE>0</PCTINCREASE>
                  <FREELISTS>1</FREELISTS>
                  <FREELIST_GROUPS>1</FREELIST_GROUPS>
                  <BUFFER_POOL>DEFAULT</BUFFER_POOL>
                  <FLASH_CACHE>DEFAULT</FLASH_CACHE>
                  <CELL_FLASH_CACHE>DEFAULT</CELL_FLASH_CACHE>
               </STORAGE>
               <TABLESPACE>USERS</TABLESPACE>
               <LOGGING>Y</LOGGING>
            </SEGMENT_ATTRIBUTES>
            <COMPRESS>N</COMPRESS>
         </HEAP_TABLE>
      </PHYSICAL_PROPERTIES>
   </RELATIONAL_TABLE>
</TABLE>]]></n0:source>
      </n0:createSxmlObject>
 </changeSet>
</databaseChangeLog>

Applied using the same method

SQL> lb update -chf controller.xml
--Starting Liquibase at 2025-11-13T10:43:21.280581300 using Java 21.0.2 (version 4.30.0 #0 built at 2025-04-01 10:24+0000)
Running Changeset: test_table_table.xml::eba4edcc742babba8e0bc8e3381ab62a2f2f08be::(TEST_SCHEMA)-Generated

UPDATE SUMMARY
Run:                          1
Previously run:               0
Filtered out:                 0
-------------------------------
Total change sets:            1
Liquibase: Update has been successful. Rows affected: 1

Operation completed successfully.
SQL> describe test_table
Name    Null?       Type
_______ ___________ ________________
ID      NOT NULL    NUMBER
NAME                VARCHAR2(100)
SQL>

I know this used to work, any suggestions? @thatjeffsmith-oracle ? Is there a new method to deploy table column changes? We haven't switched to projects yet

Comments
Post Details
Added 3 days ago
5 comments
105 views