[PYTHON] django.db.migrations.exceptions.InconsistentMigrationHistory Gestion des erreurs

introduction

Lorsque je faisais du développement Web avec Django, l'erreur de migration a pris un certain temps, je vais donc laisser les détails sur la façon dont je l'ai traitée.

environnement

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' L'erreur semble se produire si vous effectuez python manage.py makemigrations une seule fois avant d'appliquer le modèle CustomUser ...

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. Bien sûr, migrate ne fonctionnait pas non plus.

Vérifiez l'état actuel des migrations

$ python manage.py showmigrations

Si vous obtenez une erreur avec cela, cela signifie que vous n'avez pas pu migrer en premier lieu.

Faire face

Action 1

Tout d'abord, supprimez tous les fichiers autres que «__init __. Py» directement sous «migrations» de chaque application.

Puis commentez la partie'django.contrib.admin'part en haut de INSTALLED_APPS dans settings.py.

#***** 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'

De plus, commentez la partie admin de ʻurl patterns dans ʻurls.py.

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

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

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

Maintenant, faisons migrer une fois. Espérons que cela passera.

Action 2

De la même manière que [Action 1](## Action 1), supprimez tous les fichiers autres que «__init __. Py» directement sous «migrations» de chaque application.

Supprimez toute la base de données et recréez-la

En fait, je n'ai pas pu corriger l'erreur avec [Action 1](## Action 1), donc j'ai réussi à faire des migrations et à migrer en reconstruisant la base de données de cette manière. Ici, postgresql @ 10 est utilisé.

Pour la base de données, cliquez ici (https://qiita.com/kanzaki0507/items/12a2ef0b778250d699bd)

Vérifier la base de données

$ 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)

Supprimer la base de données

$ dropdb app_name 

Assurez-vous que la base de données a été supprimée

$ 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)

Reconstruire la base de données

$ 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 Avez-vous réussi?

Résumé

Cette fois, j'ai résumé une partie de l'article dans laquelle j'étais vraiment en train de développer le Web avec Django. J'ai pu migrer en reconstruisant la base de données, mais je l'ai écrite car il n'y avait pas beaucoup d'articles qui montraient cette méthode. Je voulais vous faire savoir que cette méthode peut également être résolue.

référence

Django utilise toujours le modèle CustomUser! Parler Que faire si la migration de l'utilisateur personnalisé Django échoue

Recommended Posts

django.db.migrations.exceptions.InconsistentMigrationHistory Gestion des erreurs
Gestion des erreurs de trame principale
Gestion des erreurs Python
Gestion des erreurs SikuliX
À propos de la gestion des erreurs Tweepy
Gestion des erreurs dans PythonBox
Gestion des erreurs GraphQL (gqlgen)
Autour de la gestion des erreurs de feedparser
[Contre-mesures d'erreur] Gestion des erreurs d'installation de django-heroku
Réponse aux erreurs lors de l'installation de mecab-python
À propos de FastAPI ~ Gestion des erreurs de point de terminaison ~
Mémorandum de gestion des erreurs de construction PyCUDA
Erreur divisée par 0 Gestion de ZeroDivisionError
Gestion des erreurs lors de la mise à jour de Fish shell
Gestion des erreurs lors de la migration de Django'DIRS ': [BASE_DIR /' templates ']
Enregistrement d'erreur
Le traitement des données
Gestion des exceptions
Erreur Homebrew
Selenium + Firefox 47+ Impossible de charger le profil. Gestion des erreurs
Résumé des méthodes de gestion des erreurs lors de l'installation de TensorFlow (2)