Liquibase CSV 导入错误
Liquibase CSV import error
我想导入 Liquibase 初始数据,创建 CSV,按照文档中的说明添加所有内容,但没有成功。问题是,Liquibase 正在为 UUID 值添加神秘的 [*]
,并且查询失败
flashcards.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类型,table成功
这是一条错误消息:
Syntax error in SQL statement "INSERT INTO PUBLIC.FLASHCARDS (ID,
QUESTION, ANSWER, DECKID) VALUES
(6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, ' testQuestion1', '
testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";
expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN,
BETWEEN, AND, OR, ,, )";
SQL statement: INSERT INTO PUBLIC.flashcards (id, question, answer,
deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, '
testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)
[42001-190] [Failed SQL:
INSERT INTO PUBLIC.flashcards (id, question, answer, deckId) VALUES
(6ab90e8c-3f28-46b2-81f3-b668f6908c09, ' testQuestion1', '
testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)]
liquibase.exception.DatabaseException: Syntax error in SQL statement
"INSERT INTO PUBLIC.FLASHCARDS (ID, QUESTION, ANSWER, DECKID) VALUES
(6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, ' testQuestion1', '
testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";
expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN,
BETWEEN, AND, OR, ,, )";
SQL statement: INSERT INTO PUBLIC.flashcards (id, question, answer,
deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, '
testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)
[42001-190]
[Failed SQL: INSERT INTO PUBLIC.flashcards (id, question, answer,
deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, '
testQuestion1', ' testAnswer1',
c6c4d451-65dd-4ac0-9e53-974397c7bea7)]
如何解决这个问题?
我认为错误是在您的 migrations.xml 中,您将 id 和 deckId 列的类型指定为 computed
,它们应该是字符串。
我想导入 Liquibase 初始数据,创建 CSV,按照文档中的说明添加所有内容,但没有成功。问题是,Liquibase 正在为 UUID 值添加神秘的 [*]
,并且查询失败
flashcards.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类型,table成功
这是一条错误消息:
Syntax error in SQL statement "INSERT INTO PUBLIC.FLASHCARDS (ID, QUESTION, ANSWER, DECKID) VALUES (6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, ' testQuestion1', ' testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";
expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,, )";
SQL statement: INSERT INTO PUBLIC.flashcards (id, question, answer, deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, ' testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7) [42001-190] [Failed SQL:
INSERT INTO PUBLIC.flashcards (id, question, answer, deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, ' testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)]
liquibase.exception.DatabaseException: Syntax error in SQL statement "INSERT INTO PUBLIC.FLASHCARDS (ID, QUESTION, ANSWER, DECKID) VALUES (6AB90E8C[*]-3F28-46B2-81F3-B668F6908C09, ' testQuestion1', ' testAnswer1', C6C4D451-65DD-4AC0-9E53-974397C7BEA7) ";
expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,, )";
SQL statement: INSERT INTO PUBLIC.flashcards (id, question, answer, deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, ' testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7) [42001-190]
[Failed SQL: INSERT INTO PUBLIC.flashcards (id, question, answer, deckId) VALUES (6ab90e8c-3f28-46b2-81f3-b668f6908c09, ' testQuestion1', ' testAnswer1', c6c4d451-65dd-4ac0-9e53-974397c7bea7)]
如何解决这个问题?
我认为错误是在您的 migrations.xml 中,您将 id 和 deckId 列的类型指定为 computed
,它们应该是字符串。