Prisma + PostgreSQL セットアップ備忘録
前提
- Prisma
migrate devを使う - shadow database を自動作成させる(= CREATEDB 必須)
1. ユーザー・DB作成
CREATE ROLE app_user WITH LOGIN PASSWORD 'password';
CREATE DATABASE app_db OWNER app_user;
2. CREATEDB 権限付与(重要)
ALTER ROLE app_user CREATEDB;
※ これがないと shadow database エラーになる
3. public スキーマ権限
app_db に接続後:
GRANT USAGE, CREATE ON SCHEMA public TO app_user;
4. (任意)DB権限
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
5. Prisma 初期化
npx prisma init
6. .env
DATABASE_URL="postgresql://app_user:password@localhost:5432/app_db?schema=public"
7. schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
8. migrate
npx prisma migrate dev --name init
よくあるエラー
shadow database エラー
Prisma Migrate could not create the shadow database
原因:
ALTER ROLE app_user CREATEDB;
がない
テーブル作成エラー
原因:
GRANT CREATE ON SCHEMA public TO app_user;
がない
最小構成まとめ
CREATE ROLE app_user LOGIN PASSWORD 'password';
CREATE DATABASE app_db OWNER app_user;
ALTER ROLE app_user CREATEDB;
-- app_db に接続後
GRANT USAGE, CREATE ON SCHEMA public TO app_user;