liquibase не создает столбец автоинкремента на Oracle DB 12c - PullRequest
0 голосов
/ 03 февраля 2020

Итак, я использую жидкость 3.8.5 в базе данных Oracle 12 c. Что я хочу сделать, это создать таблицу следующим образом:

<createTable tableName="a_table">
    <column name="id" type="int" autoIncrement="true">
        <constraints primaryKey="true" nullable="false" />
    </column>
    <column name="name" type="nvarchar(255)">
        <constraints nullable="false" />
    </column>
    <column name="value" type="nvarchar(255)">
        <constraints nullable="false" />
    </column>
</createTable>

После создания таблицы я пытаюсь заполнить ее следующим образом:

<changeSet id="change_set" author="author"
    context="a_context">
    <insert tableName="a_table">
        <column name="name" value="NAME1" />
        <column name="value"
            value="VALUE1" />
    </insert>
</changeSet>

Это не ' Кажется, что даже не удалось создать таблицу autoIncrement. В чем может быть проблема? Я получаю ошибку:

java.util.NoSuchElementException: Migration failed for change set path/to/my.xml::change_set::author:
     Reason: liquibase.exception.DatabaseException: ORA-01400: cannot insert NULL into ("XXX"."A_TABLE"."ID")
[Failed SQL: (1400) INSERT INTO XXX.a_table (name, value) VALUES ('NAME1', 'VALUE1')]

Я искал через inte rnet, но ничего не смог найти. База данных имеет версию 12 c, и создание этой таблицы вручную с использованием прямого кода sql и IDENTITY с той же вставкой sql работает.

Что я делаю не так?

РЕДАКТИРОВАТЬ: После более тщательного изучения жидкость, похоже, не в состоянии правильно передать код в Oracle sql. ИНФОРМАЦИЯ о создании таблицы:

[INFO ] 2020-02-03 12:12:11.650 [localhost-startStop-1] l.e.j.JdbcExecutor:42 - CREATE TABLE XXX.a_table (id INTEGER NOT NULL, name NVARCHAR2(255) NOT NULL, value NVARCHAR2(255) NOT NULL, CONSTRAINT PK_A_TABLE PRIMARY KEY (id))
[INFO ] 2020-02-03 12:12:11.713 [localhost-startStop-1] l.c.ChangeSet:42 - Table a_table created
...