[PYTHON] django.db.migrations.exceptions.InconsistentMigrationHistory Fehlerbehandlung

Einführung

Als ich mit Django Webentwicklung betrieben habe, hat der Migrationsfehler eine Weile gedauert, daher werde ich die Details meines Umgangs damit belassen.

Umgebung

Mac Catalina 10.15.6 Python 3.7 PostgreSQL 10.14 Django 2.2.2

Migration makemigrations $ python manage.py makemigrations django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database 'default' Der Fehler scheint aufzutreten, wenn Sie "python manage.py makemigrations" sogar einmal ausführen, bevor Sie das CustomUser-Modell anwenden ...

migrate $ python manage.py migrate RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. Natürlich hat "migrieren" auch nicht funktioniert.

Überprüfen Sie den aktuellen Migrationsstatus

$ python manage.py showmigrations

Wenn Sie dabei eine Fehlermeldung erhalten, bedeutet dies, dass Sie überhaupt nicht migrieren konnten.

Bewältigung

Aktion 1

Löschen Sie zunächst alle Dateien außer "__init __. Py" direkt unter "Migrationen" jeder Anwendung.

Kommentieren Sie dann den Teil "'django.contrib.admin "oben in INSTALLED_APPS in settings.py aus.

#***** settings.py ********

$ INSTALLED_APPS = [
    # 'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts'
]

AUTH_USER_MODEL = 'accounts.CustomUser'

Kommentieren Sie außerdem den Admin-Teil von "urlpatterns" in "urls.py" aus.

#*****  urls.py  *******

from django.contrib import admin
from django.urls import path
from django.urls.conf import include

urlpatterns = [
   # path('admin/', admin.site.urls),
]

Lassen Sie uns jetzt einmal "migrieren". Hoffentlich geht es vorbei.

Aktion 2

Löschen Sie wie bei [Aktion 1](## Aktion 1) alle Dateien außer "__init __. Py" direkt unter "Migrationen" jeder Anwendung.

Löschen Sie die gesamte Datenbank und erstellen Sie sie neu

Tatsächlich konnte ich den Fehler mit [Aktion 1](## Aktion 1) nicht beheben, daher gelang es mir, Migrationen durchzuführen und zu migrieren, indem ich die Datenbank auf diese Weise neu erstellte. Hier wird postgresql @ 10 verwendet.

Für die Datenbank klicken Sie hier (https://qiita.com/kanzaki0507/items/12a2ef0b778250d699bd)

Überprüfen Sie die Datenbank

$ psql -l

                             List of databases
 Name      |  Owner  | Encoding |   Collate   |    Ctype    |  Access 
                                                           |  privileges  
---------------+---------+----------+-------------+-------------+---------
 postgres   | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | 
 app_name   | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | 
 template0  | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki  +
            |         |        |             |             | kanzaki=CTc/ 
            |         |        |             |             | kanzaki
 template1  | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki  +
            |         |        |             |             | kanzaki=CTc/ 
            |         |        |             |             | kanzaki
(4 rows)

Löschen Sie die Datenbank

$ dropdb app_name 

Stellen Sie sicher, dass die Datenbank gelöscht wurde

$ psql -l

                             List of databases
 Name      |  Owner  | Encoding |   Collate   |    Ctype    |  Access 
                                                           |  privileges  
---------------+---------+----------+-------------+-------------+---------
 postgres   | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | 
 template0  | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki  +
            |         |        |             |             | kanzaki=CTc/ 
            |         |        |             |             | kanzaki
 template1  | kanzaki | UTF8   | en_US.UTF-8 | en_US.UTF-8 | =c/kanzaki  +
            |         |        |             |             | kanzaki=CTc/ 
            |         |        |             |             | kanzaki
(3 rows)

Datenbank neu erstellen

$ brew services start postgresql@10
$ create app_name

makemigrations & migrate $ python manage.py migrate Operations to perform: Apply all migrations: account, accounts, admin, auth, contenttypes, diary, sessions, sites Running migrations: Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying accounts.0001_initial... OK Applying account.0001_initial... OK Applying account.0002_email_max_length... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying diary.0001_initial... OK Applying sessions.0001_initial... OK Applying sites.0001_initial... OK Applying sites.0002_alter_domain_unique... OK Warst du erfolgreich?

Zusammenfassung

Dieses Mal habe ich einen Teil des Artikels zusammengefasst, mit dem ich mich bei der Entwicklung des Web mit Django wirklich beschäftigt habe. Ich konnte migrieren, indem ich die Datenbank neu erstellte, aber ich habe sie geschrieben, weil es nicht viele Artikel gab, die diese Methode zeigten. Ich wollte Sie wissen lassen, dass diese Methode auch gelöst werden kann.

Referenz

Django verwendet immer das CustomUser-Modell! Diskussion Was tun, wenn die Migration des benutzerdefinierten Django-Benutzers fehlschlägt?

Recommended Posts

django.db.migrations.exceptions.InconsistentMigrationHistory Fehlerbehandlung
Fehlerbehandlung im Hauptrahmen
Python-Fehlerbehandlung
SikuliX-Fehlerbehandlung
Über tweepy Fehlerbehandlung
Fehlerbehandlung in PythonBox
GraphQL (gqlgen) Fehlerbehandlung
Um Fehlerbehandlung von Feedparser
[Fehlergegenmaßnahmen] Fehlerbehandlung bei der Installation von Django-Heroku
Reaktion auf Fehler bei der Installation von mecab-python
Informationen zu FastAPI ~ Endpoint-Fehlerbehandlung ~
Memorandum zur Fehlerbehandlung bei PyCUDA-Builds
Fehler geteilt durch 0 Behandlung von ZeroDivisionError
Fehlerbehandlung beim Aktualisieren der Fischschale
Fehlerbehandlung während der Django-Migration 'DIRS': [BASE_DIR / 'Templates']
Fehleraufzeichnung
Datenverarbeitung
Ausnahmebehandlung
Homebrew-Fehler
Selen + Firefox 47+ Das Profil kann nicht geladen werden. Fehlerbehandlung
Zusammenfassung der Fehlerbehandlungsmethoden bei der Installation von TensorFlow (2)