LoginSignup
0
0

More than 1 year has passed since last update.

migrationsディレクトリを削除してデータベースをDropして再作成したのにmakemigrationsするとNo changes detectedになる原因。

Posted at

やりたい事

マイグレーションとデータベースを完全にリセットし、プロジェクトを最初に作成した時のようにmakemigrationsとmigrateを実行したい。

アプリ名を指定しないとmakemigrationsで『No changes detected』になってしまう。

データベースを完全にクリアして各アプリケーション内のmigrationsディレクトリを丸ごと削除し__pycache__も削除したが、makemigrationsを実行するとNo changes detectedと出力される。もちろん、ここでアプリ名を指定してmakemigrationsを実行すると正常にマイグレーションファイルは作成される。

python ./manage.py makemigrations appname

原因

そもそもmigrationsディレクトリと内包する__init__.pyを削除してはいけなかった。

解決

migrationsディレクトリ内の__init__.pyファイル以外を削除するか、ディレクトリごと削除してからmigrationsディレクトリ__init__.pyを作成する事で解決。

rm appname/migrations/*.py
rm appname/migrations/__pycache__/*.pyc
touch appname/migrations/__init__.py
# 私のDBはMySQLです。
cat <<__END_DDL__ | mysql -uroot
DROP DATABASE appname;
CREATE DATABASE appname;
__END_DDL__
python ./manage.py makemigrations
python ./manage.py migrate

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0