我的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.SQLServerDriver
,sqljdbc42.jar
,即版本4.2。
任何人都知道为什么会这样?
答案 0 :(得分:1)
查看ClobType.java
课程。
在方法toDatabaseDataType
中,它有一个else if
部分用于MSSQLDatabase类型:
else if (database instanceof MSSQLDatabase) {
...
我对MS SQL一无所知,但在我看来,liquibase(以及其他内容)会检查MS SQL db的版本号,并根据db版本返回不同的类型。也许这更适合于MS SQL数据库,为了方便liquibase直接翻译它?