Open3

Prisma migrateをプロダクションでどう使うか

qaynamqaynam

現状

localの場合はchema.prismaファイルを編集して、prisma migrate devを実行すると、自動で差分を検知し、SQLのmigrationファイルを作ってくれる、もう一回 prisma migrate dev を実行すると、差分のmigrationが実行され、DBのschemaが変わるような流れ。

CICDでは prisma migrate deploy を実行して、DBのschemaをコミットしている。

qaynamqaynam

問題

テーブルのカラム名変更や、カラムを別のテーブルに移行したいときに、prisma migrate devを実行すると、既にDBに入っているデーターがリセットされてしまう。

qaynamqaynam

prisma migrate deployの挙動

疑問

  1. そもそも本番のDBには _prisma_migrations のテーブルが作成されるのか?
    • どうやら作られる模様
  2. データーを強制破壊されるか?
    • 注意もされずに強制破壊された
    • テーブルのデーター移行はどうしたらいいだろう?
      • ローカルでscriptを書いてSQLを生成する -> migrationのSQLを編集する -> migrate deployを実行する
  3. migrate deployが失敗した場合どうなるのか
    • migrate resolveで直す?
    • _prisma_migrationsから該当のmigrationを見つけて、レコードを削除する、SQLを直してもう一回実行する
  4. 失敗した場合にmigrate resolveはどうやるのか
  5. migrationをTypescriptで書きたいときはどうすればいいだろう?
    • db executeコマンドでどうにかする?