💽

Prismaのマイグレーションチェックサムを手動で更新する

2023/10/27に公開

DBにマイグレーションファイルのchecksumを直接入れることにより、

The migration `xxxx` was modified after it was applied.
✔ We need to reset the MySQL database "xxx" at "xxxx"

を回避することができる。

使用上の注意

この操作は、データベース上のスキーマとスキーマファイルが完全に同期していることが確実な場合にのみ実施できる。例えば、マイグレーションを適用した後にマイグレーションファイルにコメントのみを追加した場合などが該当する。スキーマにずれがある場合、この操作によってデータ整合性の問題が発生する可能性がある。

「私は、マイグレーションを行った後でマイグレーションファイルを自分で書き換えたことを知ってるし、その変更がDBに反映されなくても大丈夫であることを確信している」
ときにのみ、この操作を行うこと。

手順

チェックサムの取得:
スキップしたいマイグレーションファイルのチェックサムを計算する。以下のコマンドを使用して、特定のマイグレーションファイルのチェックサムを取得する。

shasum -a 256 ./prisma/migrations/{migration_name}/migration.sql

ここで {migration_name} は対象のマイグレーション名に置き換えること。

チェックサムの更新:
ステップ1で取得したチェックサムを使って、データベースの _prisma_migrations テーブル内、対象の migration_name のレコードにある checksum カラムを更新する。

UPDATE _prisma_migrations
SET checksum = '取得したチェックサム'
WHERE migration_name = '対象のmigration_name';

終わり

Discussion