- Node.js 版本:18.12.1
- Strapi版本:v4.7.1
- 数据库:PostgreSQL 14
- 操作系统:Ubuntu 22.04
- 您的项目是 Javascript 还是 Typescript:TS
当“API Uploads”目录尚不存在时,如果同时触发多个文件上传(在我的例子中是通过迁移脚本),日志中会出现以下错误消息(并且某些文件未上传):
error: insert into "public"."upload_folders" ("created_at", "name", "path", "path_id", "updated_at") values ($1, $2, $3, $4, $5) returning "id" - duplicate key value violates unique constraint "upload_folders_path_id_index"
error: insert into "public"."upload_folders" ("created_at", "name", "path", "path_id", "updated_at") values ($1, $2, $3, $4, $5) returning "id" - duplicate key value violates unique constraint "upload_folders_path_id_index"
at Parser.parseErrorMessage (/.../strapi-migration-test/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/.../strapi-migration-test/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/.../strapi-migration-test/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/.../strapi-migration-test/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:513:28)
at Socket.emit (node:domain:489:12)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
这是因为多个“API Uploads”目录创建是并行触发的。当“API Uploads”目录已经存在时,不会出现该问题。
为了修复我的迁移脚本,我同步上传了第一个文件(以确保“API Uploads”目录创建仅完成一次),然后并行上传其他文件(每批 20 个)。有了这种行为,问题就不会发生。
预期行为并发问题不应该发生。