2017-04-17 101 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