liquibase中的CLOB类型在SQL Server中变为VARCHAR

时间:2015-12-21 10:56:38

标签: java sql-server liquibase varchar clob

我的liquibase xml中有以下条目:

<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 Standard Edition v12上运行它时,我发现DATA列已创建为VARCHAR类型。

我使用liquibase maven插件v3.2.0

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

任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

查看ClobType.java课程。

在方法toDatabaseDataType中,它有一个else if部分用于MSSQLDatabase类型:

else if (database instanceof MSSQLDatabase) {
    ...

我对MS SQL一无所知,但在我看来,liquibase(以及其他内容)会检查MS SQL db的版本号,并根据db版本返回不同的类型。也许这更适合于MS SQL数据库,为了方便liquibase直接翻译它?