
設定・環境構築
Prisma 7ではドライバアダプター(PrismaPg等)が必須になり、PrismaClientの初期化方法が変わりました。BunランタイムでのセットアップにはNode.js時代とは異なるハマりポイントがあります。
Bun 1.x 以上
Prisma 7.x(@prisma/adapter-pg が必須)
PostgreSQL 16(ローカルはDocker推奨)
Prisma 7ではPrismaClientにadapterを渡す必要があります。
// src/lib/prisma.ts
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.config.ts
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設定
},
});
seedファイルでもadapterが必要です。アプリ本体のprismaインスタンス(@/lib/prisma)はNext.jsのモジュール解決に依存するため、seed用に別途PrismaClientを作成します。
// prisma/seed.ts
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: "akari" },
update: { name: "アカリ", ... },
create: { slug: "akari", name: "アカリ", ... },
});
}
main()
.catch((e) => { console.error(e); process.exit(1); })
.finally(() => prisma.$disconnect());
# マイグレーション作成・適用
bun prisma migrate dev --name add_feature
# シード実行
bun prisma db seed
# Prisma Studio(DB確認GUI)
bun prisma studio
# スキーマからクライアント再生成
bun prisma generate
Prisma 7ではPrismaPg adapterが必須 — アプリ本体もseedも両方に設定
seed設定はprisma.config.tsのmigrations.seedに書く
seedファイルではdotenv/configで直接.envを読む(Next.jsのモジュール解決は使えない)
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/15
2026/3/15
2026/2/26