Liquibase loadData为字符串,而不是CLOB资源

sli*_*fty 8 migration liquibase

问题

我最近升级Liquibase以3.6.23.4.2.

将种子数据从CSV加载到文本字段现在会导致CLOB资源错误.之前它只是将文本作为值插入.

安装程序

我正在使用Liquibase来管理我的数据迁移.

我有一个带有codedescription列的表. description是类型的TEXT.

<changeSet author="" id="create-table-degrees">
  <createTable tableName="degrees">
    <column name="code"
            type="varchar(2)">
      <constraints primaryKey="true"/>
    </column>
    <column name="description"
            type="text">
      <constraints unique="true"/>
    </column>
  </createTable>
  <rollback>
    <dropTable tableName="degrees"/>
  </rollback>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

我在CSV中有种子数据:

code,description
"D1","MASTERS"
"D2","DOCTORATE"
Run Code Online (Sandbox Code Playgroud)

我用它加载它loadData:

<changeSet author="" id="seed-degrees">
  <loadData file="seeds/degrees.csv"
            tableName="degrees" />
</changeSet>
Run Code Online (Sandbox Code Playgroud)

错误

String

问题

有没有办法让Liquibase不将种子值解释为文件路径而不是字符串,或者我是否需要像3.6.2在loadData中那样手动定义列类型.

例如,我想避免将旧的changeSet修改为:

<changeSet author="" id="seed-degrees">
  <loadData file="seeds/degrees.csv"
            tableName="roles">
    <column name="description" type="string" />
  </loadData>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

小智 6

CORE-3287 中列出的解决方法:Anver S 2018 年 12 月 3 日下午 3:07

添加原始 stackoverflow 帖子中定义的显式列类型定义时

<column name="description" type="string" />
Run Code Online (Sandbox Code Playgroud)

做到了这一点 - 对我来说,它实际上需要更新已经应用的变更集,理想情况下我会尽量避免。