2017-04-17 92 views
0

我使用HSQL DB和liquibase要建立DB模式和liquibase脚本现在用的就是给了一个错误liquibase HSQL数据库列创建错误

<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-复杂type.3.2.2:属性“计算'不允许出现在元素'列'中。 - > [Help 1] plz help,note: - 我使用liquibase generatechangelog方法创建了模式定义。

所以为寻找答案的人。 HSQL数据库不是全功能的关系数据库,其所有功能都等于oracle。除去UPPER(" ..和语句的工作。

+1

这意味着你不能在计算函数创建索引。随着HSQLDB你需要创建一个基于UPPER函数的GENERATED列,然后你可以在这个列上创建一个索引 – fredt

+0

是的,我所做的是删除索引创建,但现在它在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))] - > [Help 1] – Fryder

+0

启用Oracle语法兼容性在HSQLDB上使用。 'SET DATABASE SQL SYNTAX ORA TRUE' – fredt

回答

0

您是否试图与H2?它往往有一个更全面的支持这样的功能

+0

我用hsql本身..我结合它与Jmockit来模拟一些dbpackages。 – Fryder