2015-12-21 81 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。 –

相关问题