Rails経験者のためのPrismaコマンド早見表(マイグレーション周り)
【A】 npx prisma migrate dev --name xxxxxxx
- スキーマの変更を検出し、新しいマイグレーションファイルを作成します。 →【B-1】部分に該当
- 作成されたマイグレーションファイルをデータベースに即時適用します。→【B-2】部分に該当
- Prisma Clientを再生成します(必要な場合)。→【B-3】部分に該当
【A】はRailsではrails generate migration xxxxxxx + rails db:migrate
に該当します。
【B-1】 npx prisma migrate dev --name xxxxxxx --create-only
スキーマの変更を検出し、新しいマイグレーションファイルを作成します。
【B-1】はRailsではrails generate migration xxxxxxx
に該当します。
【B-2】 npx prisma migrate deploy
作成されたマイグレーションファイルをデータベースに即時適用します。
適用するマイグレーションがない場合の動作は、コマンドは実行されますが、データベースに変更は加えられません。
コンソールには、適用するマイグレーションがないことを示すメッセージが表示されます。通常、以下のようなメッセージが表示されます:
No pending migrations to apply.
【B-2】はRailsではrails db:migrate
に該当します。
【B-3】 npx prisma generate
Prisma Clientを再生成します。
node_modules/.prisma/client/index.d.tsが更新されるはずです。
【B-3】はRailsで該当するコマンドはありません。
【C】 npx prisma migrate status
データベースに適用済みのマイグレーションとまだ適用されていない保留中のマイグレーションを表示します。
Prismaスキーマとデータベースの状態の差異を報告します。
出力例
Prisma schema version:
Started: 2023-08-01T12:00:00.000Z
Finished: 2023-08-01T12:00:05.000Z
Database schema version:
Started: 2023-08-01T12:00:00.000Z
Finished: 2023-08-01T12:00:05.000Z
Status:
2 migrations applied
1 migration pending
Pending migrations:
20230815120000_add_user_roles
【C】はRailsではrails db:migrate:status
に該当します。
【D】 npx prisma db push
主に開発の初期段階や、迅速なプロトタイピングが必要な場面で使います。このコマンドは、Prismaスキーマの変更を即座にデータベースに反映させるため、アイデアを素早く検証したい場合や、頻繁なスキーマ変更が発生する探索的な開発フェーズで使います。
このコマンドはマイグレーション履歴を作成・管理しないため、本番環境や、データの整合性が重要な段階では使用を避けるべきです。特に、複数の開発者が関わるプロジェクトや、長期的なデータベース管理が必要な場合は、マイグレーションベースのアプローチ(prisma migrate)を使用する方が安全です。
db push
は開発の初期段階や個人的な実験、迅速なプロトタイピングには適していますが、プロジェクトが成熟し、データの一貫性や履歴管理が重要になるにつれて、prisma migrate
コマンドへの移行を検討すべきです。本番環境や重要なデータを扱う環境では、常に慎重なアプローチを取り、マイグレーションベースの方法を優先することが推奨されます。
【D】はRailsではrails db:schema:load
に近いらしいですが、私は使ったことないです。
Discussion