prisma import fails to import relation tables with error: Failure inserting into relationtable

prisma import fails to import relation tables with error: Failure inserting into relationtable

当尝试使用 prisma CLI 将数据导入 postgres 数据库时 prisma import --data export.<DATE>.zip 它失败了,并且 postgresql 数据库中的所有关系都出现错误:

我必须先 运行 prisma deploy 以确保架构已更新,但是当它导入数据时,它试图导入关系两次,这违反了某种重复约束。

 "Failure inserting into relationtable _ExampleForOtherExample with ids StringIdGCValue(ckamscvpi0eo00702ep0c7log) and StringIdGCValue(cka2n025p03ri0766hnoyxf8s). Cause: insert or update on table \"_ExampleForOtherExample\" violates foreign key econstraint \"_ExampleForOtherExample_A_fkey\"\n  Detail: Key (A)=(cjvba054700dz07236tafuscj) is not present in table \"Example\".",
"Failure inserting into relationtable _ThingToOtherThing with ids StringIdGCValue(ckbgyi96h0kl1079500z24pwu) and StringIdGCValue(ckbkvgde606s50855g62uhqsb). Cause: duplicate key value violates unique constraint \"_ThingToOtherThing_AB_unique\"\n  Detail: Key (\"A\", \"B\")=(ck3kbmjgl036x0788furaqxkg, ck6uvgy7o09p40723rw34tna1) already exists.",

我不确定为什么它会导入除关系之外的所有内容。

(棱镜版本 1.30.5)

您的表之间存在外键依赖,您导入的数据不满足约束。

要么以不违反约束的顺序导入数据,要么在数据库中删除约束并在导入后重新创建它们。

您可以使用

转储所有约束
pg_dump --section=post-data databasename

tldr;

prisma1 导出在原始数据中不存在的导出数据中创建重复关系 table 行数据。可以通过删除这些重复项来解决错误。

更多详情

我发现当我使用 prisma1 export 命令时,它会在其导出的 json 文件中创建重复关系 table 行。我的源数据库没有这些重复项,但它们被引入到导出的文件中。

我创建了一个简单的节点脚本来解析所有 JSON 文件并打印出所有重复的关系行列 A ID。

使用这些数据,我小心地删除了在我的数据中创建的所有重复 prisma1 export 命令。一旦我这样做了,这个错误就消失了,我可以毫无问题地使用 prisma1 import