私のDjangoモデルのいくつかの大きな変更を試しながら、私は真剣にすべてを台無しにしました。幸いにも、私は変更をコミットしていなかったので、私はすべての変更を落としました。次のステップは、自分のデータベースを元の状態に戻すことでした。最終的には、makemigrations
とmigrate
コマンドを問題なく正常に実行できるようになりました。しかし、私がサイトにアクセスしようとするたびに、ProgrammingError
に私のテーブルtopspots_notification
が存在しないと言ってきます。明示的にテーブルを作成する移行を実行すると、Djangoテーブルが作成されません。
私は私のmigrations
フォルダに以下の移行ファイルがあります。そのテーブルを作成することになっている
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-08-25 15:52
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('topspots', '0018_siteuser_share_location'),
]
operations = [
migrations.CreateModel(
name='Notification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('message', models.TextField()),
('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipient_notification', to=settings.AUTH_USER_MODEL)),
('sender', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sender_notification', to=settings.AUTH_USER_MODEL)),
],
),
]
を。この移行を具体的に実行しようとすると、そのテーブルが存在しないため、そのテーブルを参照する後の移行を未適用しようとすると失敗します。上記のマイグレーション(私のnotification
テーブルが作成されている場所)とその後ろにあるすべてのモデルを削除しようとしました。その後、makemigrations
とmigrate
をもう一度実行しますが、適用する移行はなく、私のテーブルはまだ作成されていません。
私の質問はなぜマイグレーションを実行するとテーブルが作成されないのですか?私は手動でMySQLでテーブルを作成できることを知っていますが、私はこのようにデータベースを台無しにしてしまったことを知りたいと思います。
私は、テーブルが作成されず、移行が適用されていないことに関連した多くのSO投稿を見ましたが、私にとってはまだ役に立たないものは見つかりませんでした。
- 私のテーブルは "管理されていない"テーブルではありません。
- マイグレーションをすべて削除して新しいマイグレーションを作成しようとしました。私は私の仮定が適用されないためにはDjangoを言っている私のデータベース自体に何かがあるということです
プロジェクト全体の
migrate
を実行しているだけでなく、特定のアプリのためのマイグレーションを実行しても、特定の移行
何か提案がありがとうございます。ありがとうございました。
を助け
希望任意のデータ損失のXDの責任になりたくありませんか?この移行は適用されているとマークしていますか? – knbk
@knbk '[X]'が適用されている場合は、すべての移行が適用されたものとして表示されます。 – elethan
適用されるすべての移行の履歴を保持するテーブルdjango_migrationsがあります。あなたはそれを見てみることができます。 – shubham003