概要
prismaでnpx prisma db seed
を実行した際に意図した結果にならなかったので解決していきます。
Next.js15系 x prisma 6系です。
前提
package.jsonの一部
"@prisma/client": "^6.8.2",
"next": "15.3.2",
"prisma": "^6.8.2",
"ts-node": "^10.9.2"
package.jsonのscripts
"scripts": {
"prisma": {
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
}
}
ファイル構造
prisma/
schema.prisma
seed.ts # seed
src/
npx prisma migrate dev
でtable作成済み
何が起きた
seedを実行するためにprisma/seed.tsに処理を記述し、npx prsima db seed
を実行しましたが Environment variables loaded from .env
と表示されるだけでseedが実行されませんでした。
試したこと
prisma GitHubのissueを確認すると、.evnのDATABASE_URLに起因するエラーが散見されるので、CUSTAM_DATABASE_URLに命名を変更して実行してみました。
結果: 変化せず
npx prisma db seed使わずに直接実行npm run prisma:seed
してみました
"scripts": {
"prisma:seed": "ts-node --compiler-options '{\"module\":\"CommonJS\"}' prisma/seed.ts"
}
結果: seedが実行されました
echo sampleに書き換えてみました。
"prisma": {
"seed": "echo sample"
}
結果: 変わりませんでした。 scripts.prisma.seed自体が動いてない?
scriptsの外に出してみる
"prisma": {
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
},
結果: seedが実行されました
原因
実は正しく動作しない理由はscriptsの中に記述しているからでした。
解決策
以下指定はscriptsの外である必要がります。
"prisma": {
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
}