代码之家  ›  专栏  ›  技术社区  ›  Lars Andren

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

  •  1
  • Lars Andren  · 技术社区  · 9 年前

    我的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在MSSQLServerStandardEditionv12上运行时,我看到 DATA 列已创建为类型 VARCHAR .

    我使用liquibase maven插件v3.2.0

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

    有人知道为什么会发生这种情况吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Jens    9 年前

    查看 ClobType.java

    在方法中 toDatabaseDataType 它有一个 else if MSSQLDatabase类型的节:

    else if (database instanceof MSSQLDatabase) {
        ...
    

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