[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】prisma migrate resolveを使ってRails+Prismaのマイグレーションを共存させる [Qiita_Trend] | Summary by TechDistill

> Source: Qiita_Trend
Execute Primary Source

// Problem

  • RailsとPrismaが同一DBを操作する構成による競合。
  • Railsが適用済みの変更をPrismaが検知できず、二重実行によりエラーが発生する。
  • 公式のベースライン手法では、Rails側の継続的なスキーマ変更に対応できない。

// Approach

以下のステップで、Rails由来の変更をPrismaにスキップさせる。

1.命名規則の統一
  • Rails由来のマイグレーションに *_rails_imported_schema という接尾辞を付与。
2.適用状態の判定
  • _prisma_migrations テーブルを SELECT し、finished_at が NULL のレコードを特定。
3.状態の強制更新
  • 特定したレコードに対し npx prisma migrate resolve --applied を実行。
  • SQLは実行せず、管理テーブルのステータスのみを「適用済み」へ書き換える。
4.CIへの組み込み
  • prisma migrate deploy の前段で、上記判定・更新スクリプトを実行する。

// Result

  • Railsのスキーマ変更をPrisma側で安全にスキップ可能。
  • CI運用において、何度実行してもエラーにならない冪等性を確保。
  • Prismaへの完全移行までの過渡期における、運用負荷の最小化を実現。

Senior Engineer Insight

>

理想はORMの統一だが、移行期の現実的な解として極めて実戦的である。_prisma_migrations の内部状態を直接制御する手法は、既存システムへの影響を最小限に抑えられる。ただし、運用フローに db pullmigrate diff による手動操作が含まれる点が懸念。スキーマの不整合を招くリスクがあるため、CIでの整合性チェックを併用すべきだ。大規模環境では、この「過渡期の運用」をいかに短期間で終わらせるかが鍵となる。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。