2015-12-21 4 views
1

У меня есть следующая запись в моем LiquiBase XML:типа CLOB в LiquiBase превращается в 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 Standard Edition, v12, я вижу что столбец DATA был создан как тип VARCHAR.

Я использую плагин LiquiBase Maven v3.2.0

Драйвер я использую com.microsoft.sqlserver.jdbc.SQLServerDriver, sqljdbc42.jar, то есть версии 4.2.

У любого есть идеи, почему это происходит?

+0

'clob' не имеет размера, насколько я знаю. Вы пытались просто использовать 'type =" clob "' –

ответ

1

Проверьте класс ClobType.java.

В методе toDatabaseDataType он имеет else if раздел для типа MSSQLDatabase:

else if (database instanceof MSSQLDatabase) { 
    ... 

Я ничего о MS SQL не знаю, но мне кажется, что LiquiBase (среди прочего) проверяет номер версии SQL DB db и возвращает другой тип в зависимости от версии db. Может быть, это лучше подходит для MS SQL db, а для удобства Liquibase переводит его напрямую?

+0

Это именно то, что происходило. Liquibase переводил это в nvarchar максимального размера из-за того, что он был MSSQL db. На db DB2 он создал CLOB в качестве заданного xml. –

 Смежные вопросы

  • Нет связанных вопросов^_^