【问题标题】:Liquibase CSV import errorLiquibase CSV 导入错误
【发布时间】:2016-07-10 02:28:24
【问题描述】:

我想在 Liquibase 中导入初始数据,创建 CSV,按照文档所述添加所有内容,但没有成功。问题是,Liquibase 正在为 UUID 值添加神秘的 [*],并且查询失败

抽认卡.csv

id,question,answer,deckId
6ab90e8c-3f28-46b2-81f3-b668f6908c09, testQuestion1, testAnswer1, c6c4d451-65dd-4ac0-9e53-974397c7bea7
a2670d1a-b8fe-4884-ba49-24f5d9458a12, testQuestion2, testAnswer2, c6c4d451-65dd-4ac0-9e53-974397c7bea7
3d55ce90-e2c6-4c0e-b94d-879f1194356c, testQuestion3, testAnswer3, c6c4d451-65dd-4ac0-9e53-974397c7bea7
3a581ad7-ac65-4a49-9697-9d111b3635a7, testQuestion4, testAnswer4, 3809da97-3fe2-4f13-bbc8-1442ea62d719
fc6583eb-99be-4f39-8de6-47fff909431e, testQuestion5, testAnswer5, 3809da97-3fe2-4f13-bbc8-1442ea62d719

migrations.xml

<loadData tableName="flashcards" file="initialData/flashcards.csv">
            <column name="id" type="COMPUTED" />
            <column name="question" type="STRING" />
            <column name="answer" type="STRING" />
            <column name="deckId" type="COMPUTED" />
</loadData>

数据库中id和deckId设置为UUID类型,建表成功。

这是一条错误消息:

SQL 语句“INSERT INTO PUBLIC.FLASHCARDS (ID, 问题、答案、DECKID)价值观 (6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, 'testQuestion1', ' testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";

预期 "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,, )";

SQL 语句:INSERT INTO PUBLIC.flashcards (id, question, answer, 甲板ID)值(6ab90e8c-3f28-46b2-81f3-b668f6908c09,' testQuestion1','testAnswer1',c6c4d451-65dd-4ac0-9e53-974397c7bea7) [42001-190] [失败的 SQL:

INSERT INTO PUBLIC.flashcards(id、question、answer、deckId)值 (6ab90e8c-3f28-46b2-81f3-b668f6908c09,'testQuestion1',' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)]

liquibase.exception.DatabaseException:SQL 语句中的语法错误 “插入到 PUBLIC.FLASHCARDS(ID、问题、答案、DECKID)值 (6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, 'testQuestion1', ' testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";

预期 "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,, )";

SQL 语句:INSERT INTO PUBLIC.flashcards (id, question, answer, 甲板ID)值(6ab90e8c-3f28-46b2-81f3-b668f6908c09,' testQuestion1','testAnswer1',c6c4d451-65dd-4ac0-9e53-974397c7bea7) [42001-190]

[失败的 SQL: INSERT INTO PUBLIC.flashcards (id, question, answer, 甲板ID)值(6ab90e8c-3f28-46b2-81f3-b668f6908c09,' testQuestion1','testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)]

如何解决这个问题?

【问题讨论】:

    标签: java database csv import liquibase


    【解决方案1】:

    我认为错误在于,在您的 migrations.xml 中,您将 id 和 deckId 列的类型指定为 computed,它们应该是字符串。

    【讨论】:

    • loadData type of uuid is not supported. Please use BOOLEAN, NUMERIC, DATE, STRING, COMPUTED or SKIP - 这是当我尝试将字段类型设为 UUID 时发生的错误
    • 看起来那将是一个问题。如果你使用 STRING 或许可以?
    • 如果 STRING 不起作用,这可能是需要在 liquibase CSV 导入代码中修复的问题。
    • String 工作 :) 更新您的答案,以便我可以将其标记为“已接受”
    猜你喜欢
    • 2015-11-21
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多