【設定・環境構築】Bun + Prisma 7 環境構築ガイド(PrismaPg adapter / seed / migrate)
設定・環境構築約5分で読めます

この記事でわかること
- Prisma 7 で必須になったドライバアダプター(PrismaPg)の渡し方
- seed 設定が package.json から prisma.config.ts に移ったこと(移し忘れると黙って何も起きない)
- seed ファイルでアプリ本体の prisma インスタンスを使えない理由と回避策
- Bun でのコマンド一覧と、最初に踏む 3 つのエラー
Bun 1.x 以上、Prisma 7.x(@prisma/adapter-pg が必須)、PostgreSQL 16(ローカルは Docker 推奨)。
メモ
Bun環境でPrisma 7(PrismaPg adapter必須)を使う際のセットアップ手順とハマりどころを紹介します。
はじめに
Prisma 7ではドライバアダプター(PrismaPg等)が必須になり、PrismaClientの初期化方法が変わりました。BunランタイムでのセットアップにはNode.js時代とは異なるハマりポイントがあります。
1. PrismaClientの初期化
Prisma 7ではPrismaClientにadapterを渡す必要があります。
import { PrismaPg } from "@prisma/adapter-pg";
import { PrismaClient } from "@prisma/client";
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});
const prisma = new PrismaClient({ adapter });
export default prisma;注意
Prisma 6 以前の
new PrismaClient() だけではエラーになります(「PrismaClient needs non-empty PrismaClientOptions」)。必ず adapter を渡してください。2. prisma.config.ts(Prisma 7の新設定)
import path from "node:path";
import { defineConfig } from "prisma/config";
export default defineConfig({
earlyAccess: true,
schema: path.join("prisma", "schema.prisma"),
migrations: {
path: "prisma/migrations",
seed: "bun ./prisma/seed.ts", // ← Bun用のseed設定
},
});注意
Prisma 7 では
package.json の prisma.seed は無視されます。prisma.config.ts の migrations.seed に設定してください。設定を移し忘れると、エラーではなく黙って何も起きないので気づきにくいです。3. Seedファイル
seedファイルでもadapterが必要です。アプリ本体のprismaインスタンス(@/lib/prisma)はNext.jsのモジュール解決に依存するため、seed用に別途PrismaClientを作成します。
import { PrismaPg } from "@prisma/adapter-pg";
import { PrismaClient } from "@prisma/client";
import "dotenv/config"; // .envを直接読み込む
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});
const prisma = new PrismaClient({ adapter });
async function main() {
// upsertでべき等にシード
await prisma.character.upsert({
where: { slug: "char-a" },
update: { name: "キャラA", ... },
create: { slug: "char-a", name: "キャラA", ... },
});
}
main()
.catch((e) => { console.error(e); process.exit(1); })
.finally(() => prisma.$disconnect());4. コマンドまとめ
# マイグレーション作成・適用
bun prisma migrate dev --name add_feature
# シード実行
bun prisma db seed
# Prisma Studio(DB確認GUI)
bun prisma studio
# スキーマからクライアント再生成
bun prisma generateトラブルシューティング
重要
PrismaClient needs non-empty PrismaClientOptions → adapter の渡し忘れ。PrismaPg adapter を import して渡す。重要
prisma db seed が「seed command not found」→ package.json ではなく prisma.config.ts に seed 設定を書く(Prisma 7)重要
Foreign key constraint violated → JWT のユーザー ID が DB に存在しない。DB を作り直したときに、古いセッションがブラウザに残っているのが原因。セッションをクリアして再ログイン。まとめ
- Prisma 7ではPrismaPg adapterが必須 — アプリ本体もseedも両方に設定
- seed設定はprisma.config.tsのmigrations.seedに書く
- seed ファイルでは
dotenv/configで直接.envを読む(Next.js のモジュール解決は使えない)
参考リンク
更新履歴
- seed のコード例に入っていたプロダクト固有の名前を汎用な形に差し替え。コードブロックにファイルパスのキャプションを追加し、callout の色指定を他記事と揃えた。seed 設定の移し忘れが黙って失敗すること、Foreign key エラーの発生状況を補足。参考リンクの節を新設し、Prisma 周りの関連記事へのリンクを追加。本文の前提条件をプロパティへ移動。


