liquibase hsql db列创建错误

Posted

技术标签:

【中文标题】liquibase hsql db列创建错误【英文标题】:liquibase hsql db column creation error 【发布时间】:2017-04-17 17:58:31 【问题描述】:

我正在使用 hsql db 和 liquibase 创建一个 db 架构,而我正在使用的 liquibase 脚本出现错误

<changeSet author="fryder" id="1492138266795-903">
        <createIndex indexName="ACCESS_GRP_IDX" tableName="ACCESS_GRP">
            <column computed="true" name="UPPER(&quot;DESCR&quot;)"/>
        </createIndex>
    </changeSet>

cvc-complex-type.3.2.2:属性“computed”不允许出现在元素“column”中。 -> [帮助 1] 请帮助,注意:- 我使用 liquibase generatechangelog 方法创建了架构定义。

所以对于寻找答案的人来说。 HSQL db 不是一个成熟的关系数据库,其所有功能都与 oracle 相同。删除了 UPPER(".. 并且该语句有效。

【问题讨论】:

这意味着您不能在计算函数上创建索引。使用 HSQLDB,您需要基于 UPPER 函数创建一个 GENERATED 列。然后,您可以在此列上创建索引。 是的,我所做的是删除了索引创建。但现在它在 liquibase.exception.DatabaseException 失败:找不到类型或用户缺少权限:VARCHAR2 [失败的 SQL:CREATE TABLE DATABASECHANGELOGLOCK(ID INT NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR2(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))] -> [帮助1] 在 HSQLDB 上启用 Oracle 语法兼容模式。 SET DATABASE SQL SYNTAX ORA TRUE 嗨,弗雷德,感谢您的快速回复。但是我已经在运行 jdbc:hsqldb:hsql://localhost/sandboxdb;sql.syntax_ora=true 那行不通。阅读有关服务器的 HSQLDB 指南章节。 【参考方案1】:

你试过 H2 吗?它通常对此类功能有更完整的支持

【讨论】:

我与 hsql 本身一起使用。我将它与 Jmockit 结合起来模拟一些 dbpackages。

以上是关于liquibase hsql db列创建错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Liquibase 中定义一组默认列 def. PK,定义。索引,定义。表创建的值?

HSQL 列名包含 #

使用 liquibase 和 docker postgis/postgis 的错误编码

HSQL DB 中表名的最大大小是多少?

如何从脚本文件创建 HSQL in-memory-db?

SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase] 错误