【Django】makemigrations/マイグレーションの取り消し

djangoのmodelsでテーブルを定義した後に、python manage.py makemigrations を実行し、python manage.py migrate を実行したところ、不穏なエラーが出て解決方法がわからずに、マイグレーションを一度取り消してテーブル定義からやり直したい時はありませんか?

本日はそんなマイグレーションの取り消し方法を紹介します。

エラー発生の経緯

まず改めてどのようなコマンドを実行してエラーに至ったのかを簡単に説明します。

テーブル定義後に以下のようにマイグレーションファイル作成のコマンドを実行しました。

そして、以下のコマンドでmakemigrationsで生成されたファイルをデータベースに適用するコマンドを実行します。

すると…

ほげええええええなんじゃこりゃああああ!!!

(ちなみにこのエラーの原因はmodels.DateTimeFieldに、default=””という引数を用いたためにエラーが発生しました。)

というわけで、うまくできなかったのでマイグレーションの取り消し実行することにします。

取り消す手順

手順としては

  1. 履歴を確認する
  2. その履歴箇所まで巻き戻す
  3. ファイルを物理的に削除する

という手順をふみます。

履歴を確認する

以下のコマンドでマイグレーションの履歴を確認します。

上のうち、[X]のXがない[ ]となっている0004_auto_20210731_1557 という履歴がexecute(エグゼキュート)、つまりプログラミングでいうx(実行)がないことを意味しています。

python manage.py makemigrationsで必要なファイルは作成したけど、DBに設計図を流し込む(python manage.py migrate)ことはしていないということです。

migrateでロールバックする

履歴がわかったところで、ロールバックしていきます。

以下のコマンドを実行します。

つまり今回の場合、myappがアプリ名で、00~で始まる名前が履歴になります。

つまり、以下のようにコマンドを実行します。

このようになれば成功です。

マイグレーションファイルを削除する

物理的にファイルを削除します。

今回の場合は、0004_auto_20210731_1557.pyというファイルを削除します。

確認のために、showmigrationsを実行してみます。

以上。

最後に

いかがでしたでしょうか。

以上が「【Django】makemigrations/マイグレーションの取り消し」の紹介記事になります。

プログラミング学習を効率良く進めるには…

私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。

何から手をつけていいのか、わからない。

プログラミングを始めてみたけど、エラーが解決できない。

そしてネットで調べていくうちに膨大な時間が過ぎていきました。

私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。

1. いつまでもダラダラとやらないで、目標を決定して短期集中する

2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう

.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。

カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?

また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です