我最近将Liquibase从3.6.2
升级到3.4.2
。
现在将CSV中的种子数据加载到文本字段中会导致CLOB资源错误。在此之前,只需将文本作为值插入即可。
我正在使用Liquibase来管理数据迁移。
我有一个带有code
和description
列的表。 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>
Unexpected error running Liquibase: CLOB resource not found: MASTERS
是否有一种方法可以防止Liquibase将种子值解释为文件路径而不是字符串,还是需要在loadData中手动将列类型定义为String
。
例如我想避免将旧的changeSet修改为:
<changeSet author="" id="seed-degrees">
<loadData file="seeds/degrees.csv"
tableName="roles">
<column name="description" type="string" />
</loadData>
</changeSet>
答案 0 :(得分:2)
CORE-3287:Anver S 2018年12月3日,下午3:07中列出的解决方法
在添加原始定义的显式列类型定义的同时 stackoverflow发布
<column name="description" type="string" />
可以解决问题-对我来说,有效地要求已经进行了更新 应用了变更集,理想情况下我会尽量避免。