Django - Pas de table de ce type: principal.auth_utilisateur__le vieux
J'ai été à la suite de la première application tutoriel de l'officiel de Django docs et a obtenu cette erreur lorsque vous essayez d'enregistrer certaines des modifications apportées par le biais de la page admin. J'ai fait quelques recherches sur elle, mais les solutions possibles, j'ai pu trouver, telles que la migration d'une base de données, ne fonctionnerait tout simplement pas. Laissez-moi savoir si vous voulez voir certaines partie de mon code.
Voici l'erreur:
OperationalError à /admin/sondages/question/1/changement/pas de table de ce type:
principal.auth_utilisateur__la vieille Méthode de la Requête: la Requête POST
URL: http://127.0.0.1:8000/admin/polls/question/1/change/ Django
Version: 2.1.4 Type d'Exception: OperationalError Valeur d'Exception: aucun
un tel tableau: principaux.auth_utilisateur__vieux Exception
Emplacement: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py
dans exécuter, ligne 296 Python
Exécutable: /Users/gfioravante/Projets/test_app/ta_env/bin/python3
Une Version De Python: 3.7.1 Python Path:
[/Utilisateurs/gfioravante/Projets/test_app/test_app',
'/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
'/usr/local/Cave/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
'/usr/local/Cave/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
/Utilisateurs/gfioravante/Projets/test_app/ta_env/lib/python3.7/site-packages']
Serveur de temps: le Mercredi, 5 Décembre 2018 16:45:00 +0000
et le traceback:
Environnement:
Méthode de demande: Demande POST à l'URL:
http://127.0.0.1:8000/admin/polls/question/1/change/Django Version: 2.1.4 Version De Python: 3.7.1 Applications Installées:
['sondages.des apps.PollsConfig', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.les messages',
'django.contrib.staticfiles'] Installé Middleware:
['django.middleware.de sécurité.SecurityMiddleware',
'django.contrib.les sessions.middleware.SessionMiddleware',
'django.middleware.commun.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.les messages.middleware.MessageMiddleware',
'django.middleware.le clickjacking.XFrameOptionsMiddleware']Traceback:
Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans _execute
85. retour auto.le curseur.execute(sql, params)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py"
dans exécuter
296. de retour de la Base de données.Le curseur.execute(auto, requête, params)L'exception ci-dessus (qui n'tableau: principaux.auth_utilisateur__) a été de la
cause directe de l'exception suivante:Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py"
en interne
34. réponse = get_response(demande)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py"
dans _get_response
126. réponse = auto.process_exception_by_middleware(e, demande)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py"
dans _get_response
124. réponse = wrapped_callback(demande, *callback_args, **callback_kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"
dans wrapper
604. retour auto.admin_site.admin_view(avis)(*args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"
dans _wrapped_view
142. réponse = view_func(demande, *args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py"
dans _wrapped_view_func
44. réponse = view_func(demande, *args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" en interne
223. de retour de vue(demande, *args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"
dans change_view
1640. retour auto.changeform_view(demande, object_id, form_url, extra_context)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"
dans _wrapper
45. retour bound_method(*args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"
dans _wrapped_view
142. réponse = view_func(demande, *args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"
dans changeform_view
1525. retour auto._changeform_view(demande, object_id, form_url, extra_context)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"
dans _changeform_view
1571. auto.log_change(demande, new_object, change_message)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"
dans log_change
826. change_message=message,Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py"
dans log_action
35. change_message=change_message,Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py"
dans manager_method
82. retour getattr(self.get_queryset(), nom)(*args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py"
en créer
413. obj.enregistrer(force_insert=True, l'utilisation de=auto.db)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"
dans enregistrer
718. force_update=force_update, update_fields=update_fields)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"
dans save_base
748. mise à jour = auto._save_table(raw, cls, force_insert, force_update, à l'aide, update_fields)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"
dans _save_table
831. result = self._do_insert(cls._base_manager, l'aide, les champs, les update_pk, raw)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"
dans _do_insert
869. l'utilisation de=l'aide, raw=raw)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py"
dans manager_method
82. retour getattr(self.get_queryset(), nom)(*args, **kwargs)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py"
dans _insert
1136. de retour de la requête.get_compiler(à l'aide d'=aide).execute_sql(return_id)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py"
dans execute_sql
1289. le curseur.execute(sql, params)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans exécuter
100. de retour à super().execute(sql, params)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans exécuter
68. retour auto._execute_with_wrappers(sql, params, de nombreux=False, exécuteur=auto._execute)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans _execute_with_wrappers
77. retour exécuteur testamentaire(sql, params, beaucoup, contexte)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans _execute
85. retour auto.le curseur.execute(sql, params)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py"
dans sortie
89. soulever dj_exc_value.with_traceback(de sperme) de exc_valueFichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"
dans _execute
85. retour auto.le curseur.execute(sql, params)Fichier
"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py"
dans exécuter
296. de retour de la Base de données.Le curseur.execute(auto, requête, params)Type d'Exception: OperationalError à /admin/sondages/question/1/changement/
Valeur d'Exception: no such table: principal.auth_utilisateur__vieux
- Si vous n'avez pas les données, il suffit de retirer et de migrer à nouveau. Si pas possible, ne
python manage.py showmigrations
pour voir qui migrations ne le fait pas
Vous devez vous connecter pour publier un commentaire.
Je viens de tomber sur ce moi-même, il semble être lié à https://code.djangoproject.com/ticket/29182. Pour l'instant, vous pouvez simplement réduire votre version de sqlite à une version antérieure à la version 2.6 (par exemple 2.5.1)
pacman -U path/to/cache/sqlite-3.25.3-1-x86_64.pkg.tar.xz
Le problème est causé par la modification de comportement de la
ALTER TABLE RENAME
déclaration dans SQLite 3.26.0 (voir compatibilité note). Ils ont également introduit laPRAGMA legacy_alter_table = ON
déclaration afin de maintenir la compatibilité avec les versions précédentes. La prochaine Django version 2.1.5 utilise le mentionné précédemment énoncé comme un correctif. Il est prévu le 1er janvier 2019.aller dans ce dossier django/db/backends/sqlite3
copie de sauvegarde "schema.py" fichier vers un autre dossier
ouvrez le fichier original schema.py dans un éditeur de texte
là, vous pouvez voir un extrait de code comme
de les commenter et de les coller l'extrait de code suivant
Cela a fonctionné pour moi. (la sauvegarde de la schema.py est dans le cas où les travaux vont mal ; D
)
pour plus d'info
https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef
merci
Même chose est arrivé à moi, c'est très frustrant. J'utilise anaconda pour mes environnements, j'ai trouvé que je ne pouvais pas supprimer sqlite sans réinstaller la dernière version de sqlite. Essayer une ancienne version de django n'a pas l'air de fonctionner. La seule solution qui a fonctionné pour moi est d'utiliser une base de données PostgreSQL. Ce n'est certainement pas l'idéal, mais je suis de la planification sur l'utilisation de la base de données PostgreSQL dans le futur, donc ce n'était pas une perte de temps totale. Si vous vous trouvez dans le même endroit que j'avais alors ce vidéo peut être utile si vous voulez savoir comment faire pour se connecter à la base de données PostgreSQL avec votre projet django.
Vous aurez besoin pour installer la base de données postgreSQL avant de faire des changements dans settings.py l'installation est plus ou moins en cliquant sur Suivant sur toutes les options. Cependant, rappelez-vous le nom d'utilisateur et le mot de passe que vous utilisez lors de l'installation.
J'ai résolu le problème par la mise à niveau de Django à partir 2.1.4 2.1.5, mais j'ai eu à reconstruire le projet de nouveau, parce que le bug semble être en quelque sorte lié à la obgjects j'ai inséré dans la base de données en utilisant l'ancienne version de Django.
si vous ne voulez pas changer votre Django version de la Base de données doit être le changement.
L'utilisation de PostgreSQL mes recommandations.
Le problème serait régler après makemigrations et de migrer.
Suit:
Désinstaller actuel de Django à partir de votre ENV. Il suffit de supprimer le dossier "anaconda3/env/yourenv/lib/python3.7/site-packages/Django toutes les versions..
*Remarque: Uniquement pour l'Anaconda, les utilisateurs, les autres utilisateurs doivent comprendre comment désinstaller un package à partir de votre ENV.
Aller à Github.com/django/django.
Télécharger le repo fichier zip.
Extraire zip.
Passer à votre ENV.
Entrer dans le dossier extrait.
Run "python setup.py installer" Et d'installer Django.
Supprimer votre ancien db.sqlite3 fichier. Maintenant appliquer les migrations à nouveau pour créer une nouvelle bd.sqlite3 fichier.
*Note: je ne sais pas comment résoudre précédente dbfile et de prévenir la perte de données. Alors merci de me dire si vous le savez.
Bravo! Il fonctionne très bien maintenant.
Dernière mise à jour de django en janvier de l'officiel de Django libération.
J'ai juste essayé de résoudre le problème à l'aide de la dernière version de Django, mais le problème persiste.
Jusqu'au moment où ils n'ont pas de débogage de cette question avec Django et Sqlite3 utiliser les anciennes versions de Django, Vous pouvez envisager d'utiliser la version 1.10.5(à l'aide de la commande pip install --mise à niveau de django==1.10.5)
J'ai eu le même problème sauf que j'ai eu 2 bases de données sqlite et la base de données personnalisée routeur. J'ai réussi à le faire fonctionner par la dégradation de Django à 1.11.20 et pas besoin de recréer les bases de données.
Ce que vous pouvez faire est que tout simplement il suffit d'aller à la base de données à l'aide de sqlite3 navigateur et modifier la table de référence à l'aide de l'attribut respectif de auth_utilisateur__vieux pour auth_user. Il a travaillé pour moi et mon projet fonctionne bien.
Se débarrasser de ce problème facilement en maintenant les étapes suivantes:
pip install django==2.1.5
python manage.py makemigrations
et puispython manage.py migrate
python manage.py runserver
FAIT!
Pour ceux qui ne peuvent pas résoudre cette erreur avec les réponses ci-dessus, si vous aviez fait votre application avec le nom “principal”, cette erreur peut se produire à cause du même nom de l'application question. Donc, essayez de changer votre nom de l'application “principal” à l'autre.
Pour les autres qui ne veulent pas rétrograder tout logiciel, vous pouvez vous diriger dans votre
settings.py
fichier et dans leDATABASES
dict, vous pouvez remplacer.sqlit3
avec.postgresql
, et juste en dessous il changer ledb.sqlit3
àdb.sql
. Cela bascule par défaut de votre db à l'utilisation de postgreSQL.En faisant cela, vous aurez besoin de
pip install psycopg2
.Supprimer votre
db.sqlite3
fichier (si vous en avez un, ne se soucient pas de perdre ce qu'il contient) et tout le reste qui n'est pas le__init__.py
fichier dans votre application de migration du dossier. Une fois que vous avez fait tout cela, vous pouvez exécuterpython manage.py makemigrations
et pythonmanage.py migrate
et il devrait fonctionner 🙂Espère que j'ai été en mesure d'aider quelqu'un!
Open => /YourAppFolder/migrations/ U serait de voir la migration de fichiers comme du " 0001_initial.py' supprimer tous ces fichiers. Et exécuter le prédécesseur de commande
1-
python manage.py makemigrations
2-
python manage.py migrate
L'espoir, il doit seul votre problème 🙂
Installer Django 1.11.16 n'est pas utile pour moi. Il va montrer "ModuleNotFoundError" et "FileNotFoundError". Puis j'ai ouvert le fichier "db.sqlite3", copier le tableau "auth_user" et "django_content_type" avec struct et de données, de changer de nom de table "auth_utilisateur__vieux" et "django_content_type__vieux". Il a travaillé! J'espère que C'est utile de le confondre.
Il y a juste 4 choses que j'ai fait sur la ligne de commande et il a fixé les miens.
py manage.py makemigrations
py manage.py migrate
py manage.py runserver
(démarrer le serveur)Veuillez downgrade django version 1.5 ou dans le cas où si vous ne voulez pas de rétrograder la version ensuite, vous pouvez changer schema.py localement, appliquez le patch et exécuter makemigrations + migrer de commande, mais n'est pas recommandée.
De mise à niveau de la version de Django à partir de 2.1 à la hausse. J'ai mis à 2.1.8.
A fonctionné pour moi!
Cheers.....