解決する Djangoのマイグレーション 変更が検出されない テーブルを作成できない
2022-03-02 11:03:12
原因
テーブルの構造を変更した後、以下を実行します。
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
プロセス
まず、アプリの対応するディレクトリにあるデータベースファイルとキャッシュファイルを削除します。
$ 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_migrations テーブルを見つけ、該当するテーブルを削除します。
delete from django_migrations where app='yourappname';
generate databaseコマンドを再実行します。
$ 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
データテーブルが正常に生成されました。
まとめ
を実装した後
python3 manage.py makemigrations
python3 manage.py migrate
これを実行すると、0001_initial.pyに対応するモデルスクリプトが作成されるだけでなく、作成されたモデルのデータベースレコードも作成されます。データベースを再生成したい場合は、両方の場所を削除する必要があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例