You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prisma执行CSV数据库种子命令时遇语法错误,如何解决?

问题原因

PostgreSQL的COPY命令不支持用参数绑定指定文件路径,Prisma的$executeRaw会把你插值的${accountSeedFile}转换成SQL参数(也就是报错里的$1),这不符合PostgreSQL的语法规则,因此触发42601语法错误。

解决方案

由于种子文件是你自行维护的可信文件,不存在SQL注入风险,可以直接用模板字符串拼接路径,同时改用$executeRawUnsafe执行($executeRaw会强制参数化,无法满足直接拼接路径的需求):

const accountSeedFile = join(process.cwd(), './prisma/seeds/accounts.csv');

const accountSeedPromise = prisma.$executeRawUnsafe(`
  COPY "accounts"(id, name, bank)
  FROM '${accountSeedFile}'
  DELIMITER ','
  CSV HEADER;
`);

const [accountsResult] = await Promise.all([accountSeedPromise]);

另外需要确保PostgreSQL服务进程拥有读取该种子文件的权限,本地开发环境一般无此问题;若为生产环境,建议将文件放在PostgreSQL可访问的目录下,或改用COPY FROM STDIN通过数据流导入数据。

内容的提问来源于stack exchange,提问作者Sadraque Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:30:28