2015-12-21 104 views
1

我在liquibase XML輸入以下內容:CLOB類型變成VARCHAR在SQL Server

<changeSet author="lars" id="1"> 
    <createTable tableName="STATUS"> 
     <column autoIncrement="true" name="AUTOID" type="BIGINT"> 
      <constraints primaryKey="true" primaryKeyName="PK_STATUS"/> 
     </column> 
     ... 
     <column name="DATA" type="CLOB(1048576)"> 
      <constraints nullable="false"/> 
     </column> 
     <column name="VERSION" type="BIGINT"> 
      <constraints nullable="false"/> 
     </column> 
    </createTable> 
</changeSet> 

但是當我使用liquibase上的MS SQL Server標準版運行此,V12,我見DATA列已創建爲類型VARCHAR

我用liquibase Maven插件V3.2.0

我使用的驅動程序是com.microsoft.sqlserver.jdbc.SQLServerDriversqljdbc42.jar,即4.2版本。

任何人有任何想法,爲什麼會發生這種情況?

+0

'clob'並不佔據我所知的大小。你是否嘗試簡單地使用'type =「clob」' –

回答

1

查看ClobType.java類。

toDatabaseDataType它對於MSSQLDatabase類型的else if節的方法:

else if (database instanceof MSSQLDatabase) { 
    ... 

我不知道MS SQL什麼,但在我看來,那liquibase(除其他事項外)檢查版本號的MS SQL數據庫,並根據數據庫版本返回不同的類型。也許這更適合MS SQL數據庫,爲了方便liquibase直接翻譯它?

+0

這正是發生了什麼事情。由於它是一個MSSQL數據庫,Liquibase正在將它轉換爲最大大小的nvarchar。在DB2數據庫上,它創建了一個CLOB作爲指定的xml。 –

相關問題