Django migrate No changes detectedがテーブルを作成できないことを解決

3352 ワード

の原因となる
テーブル構造を修正した後、python3 manage.py migrateエラーを報告します.
django.db.utils.OperationalError: (1091, "Can't DROP 'email'; check that column/key exists")

だからデータベースに入って対応するテーブルを削除して、このテーブルを再生成したいと思っています.テーブルを削除してから実行します.
python3 manage.py makemigrations
python3 manage.py migrate

まだテーブルを生成できません.ヒント:No changes detectedプロセス
まず、app対応ディレクトリの下にあるデータベース対応ファイルとキャッシュファイルを削除しました.
$ rm -rf migrations/ __pycache__/

再実行:
$ python3 manage.py makemigrations
No changes detected
$~/code/django/blogproject$ python3 manage.py makemigrations comments
Migrations for 'comments':
  comments/migrations/0001_initial.py
    - Create model Comment
$~/code/django/blogproject$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, comments, contenttypes, sessions, users
Running migrations:
  No migrations to apply.

データベースにアクセスしてもテーブルは生成されません.
そしてdjango_が1枚見つかりましたmigrationsテーブルでは、テーブルの作成に関するレコードを記録し、対応するデータテーブルを削除します.
delete from django_migrations where app='yourappname';

データベースの生成コマンドを再実行するには、次の手順に従います.
$ python3 manage.py makemigrations comments
No changes detected in app 'comments'
$~/code/django/blogproject$ python3 manage.py  migrate comments
Operations to perform:
  Apply all migrations: comments
Running migrations:
  Applying comments.0001_initial... OK

データテーブルは順調に生成する.
結論
python 3 manageを実行します.py makemigrations python3 manage.py migrate操作の場合、0001_が作成されるだけでなくinitial.py対応のモデルスクリプトは、データベースレコードで作成されたモデルも作成します.データベースを再生成するには、両方を削除する必要があります.