oracle - liquibase 不会在 Oracle DB 12c 上创建 autoIncrement 列
问题描述
所以我在 Oracle Database 12c 上使用 liquibase 3.8.5 版。我想要做的是以这种方式创建一个表:
<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')]
我已经通过互联网搜索,但找不到任何东西。数据库是 12c 版本,使用直接 sql 代码手动创建此表,并且 IDENTITY 具有相同的插入 sql 确实有效。
我究竟做错了什么?
编辑:经过更多研究,liquibase 似乎无法将代码正确传输到 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
解决方案
推荐阅读
- security - 向客户端公开具有读取平衡权限的条带密钥的安全风险?
- javascript - 即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中
- c - 针对 pipe(2) 的读取操作不会阻塞进程
- reactjs - 在另一个组件 V6 中反应路由
- c++ - 检查堆栈是否是回文
- r - R 分组观察数等于模式(按组)随时间变化
- python - 我可以从 Python Tesseract 文件夹中的所有图像中获取数据吗?
- typescript - 将一个对象的类型安全属性添加到另一个对象的简写
- python - 尝试完成文本文件中缺少的信息,如果无法完成,则使用 python 将其放入新文件中
- angular - 如何获取我正在上传的文件的名称