ERROR [flask_migrate] Error: Can’t locate revision identified by ~というエラーを対処する
2024年7月10日

こんにちは!
今回の記事では、ERROR [flask_migrate] Error: Can’t locate revision identified by 〜というエラーの対処方法について解説したいと思います。
このエラーは、データベース内のalembic_versionテーブルに格納されているリビジョンIDが、現在のマイグレーションディレクトリに存在しないために発生します。
エラーの原因と対策について詳しく解説します。
エラーが発生した状況
まず、エラーが発生した状況について、migrateコマンドを実行した際にエラーがでました。
flask db migrate
→ERROR [flask_migrate] Error: Can't locate revision identified by '9912ca86c1a4'
データベースの構造を変更した場合にmigrateコマンドを実行しますが、その際にエラーがでました。
エラーの原因
エラーの原因は、データベース内のalembic_versionテーブルに格納されているリビジョンIDが、現在のマイグレーションディレクトリに存在しないためです。
以前のマイグレーションディレクトリが削除されたり、新しい環境で初期化されたりした結果として発生する場合があります。
私の環境の場合、Renderというホスティングサービスで、migrateディレクトリが消えていたため、発生しました。
ERROR [flask_migrate] Error: Can’t locate revision identified by ~というエラーを対処する方法
では、どのようにすれば、エラーを対処できるのかについて解説します。
まず、DBにアクセスして、alembic_versionテーブルを削除します。
DELETE FROM alembic_version;
次に、マイグレーションディレクトリの初期化を行います。
flask db init
新しいマイグレーションスクリプトの生成します。
flask db migrate
最後に、データベースのアップグレードを行います。
flask db upgrade
これで、完了です!
注意点としては、この作業で元のデータが消えるわけではありませんが、事前にバックアップを取得することが必要です。データベースの構造を変えるため、慎重に操作をすることが大切です。
まずは、バックアップを取得して、元のデータにいつでも戻せる状態になってから、上記のコマンドを実行しましょう。
関連記事
- CommandError: Can’t locate revision identified by ‘…’ when migrating using Flask-Migrate
- Flask-SQLAlchemyとは?FlaskでDBを使おう
まとめ
今回の記事では、ERROR [flask_migrate] Error: Can’t locate revision identified by 〜というエラーの対処方法について解説しました。
Flaskでデータベースを使用している方は発生する可能性があるので覚えておきましょう。
当ブログでエラーの解決ができれば幸いです。
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

インフラの学習はInfraAcademy

おすすめの記事









