【问题标题】:Liquibase loadData as string, not CLOB resourceLiquibase loadData 作为字符串,而不是 CLOB 资源
【发布时间】:2018-12-30 08:55:38
【问题描述】:

问题

我最近将 Liquibase 从 3.4.2 升级到了 3.6.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>

我在 CSV 中有种子数据:

code,description
"D1","MASTERS"
"D2","DOCTORATE"

我使用 loadData 加载它:

<changeSet author="" id="seed-degrees">
  <loadData file="seeds/degrees.csv"
            tableName="degrees" />
</changeSet>

错误

运行 Liquibase 时出现意外错误:找不到 CLOB 资源:MASTERS

问题

有没有办法阻止 Liquibase 将种子值解释为文件路径而不是字符串,还是我需要在 loadData 中手动将列类型定义为 String

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

<changeSet author="" id="seed-degrees">
  <loadData file="seeds/degrees.csv"
            tableName="roles">
    <column name="description" type="string" />
  </loadData>
</changeSet>

【问题讨论】:

标签: migration liquibase


【解决方案1】:

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

在添加原始列类型定义时 堆栈溢出帖子

<column name="description" type="string" />

成功了 - 对我来说,它实际上需要更新 应用了我会尽量避免的变更集。

【讨论】:

  • 感谢您直接添加 - 尽管我不会将其标记为答案,因为该解决方案实际上是问题的一部分(列为我想避免的问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
相关资源
最近更新 更多