Docker + PostgreSQLにてFAILED: Can't locate revision identified by 'hogehoge'エラーでマイグレーションができない

3分で読めるテック

はじめに

Alembicを使ってpythonにてDBの開発を行っていたときに、少しだけハマったエラーについて。

一旦DBを初期化しようとしても、エラーが出てしまう。

$ alembic downgrade base
container_name_1 | FAILED: Can't locate revision identified by '90b5e2f5aebf'

解決策

ちょっと調べてみると、解決方法は2つあった。

  1. DB上のバージョン管理ファイルを直接削除する
  2. Dockerのボリュームを削除する

1の方法も試みたが、うまくいかなかったので2の方法で無理やり解決した。

$ docker volume rm container_name_db-data
// 再度マイグレーションを実行
$alembic upgrade head

ちなみに docker volume rm のようにボリュームを名前指定で消す代わりに、Compose のプロジェクトごとまとめて消す docker compose down -v も使えます。stop と down の使い分けは別記事にまとめています。

1の方法はこちらの記事を参考にさせてもらった。

原因

どうやらAlembicにてマイグレーションを作成した時点でのファイルを削除してしまっていた模様。

基本は一度downgradeしてから調整しないといけなさそうだった。

たしかに、Railsなどでもmigrationファイルを編集するとDBのロールバックなどは手こずる。

質問・リクエストを送る

記事についての質問や、取り上げてほしいテーマがあればお気軽にどうぞ。いただいた質問はブログ記事として回答し、Q&Aページで公開することがあります。

このサイトについて

井上 周(Amane Inoue)の個人ブログです。技術・読書・ドラマ・旅・大学生活のことを書いています。