python - Django-Aucune table de ce type: main.auth_user__old




python-3.x django-models (14)

Je suivais le premier didacticiel d'application issu de la documentation officielle de Django et j'ai eu cette erreur en essayant de sauvegarder certaines modifications apportées via la page d'administration. J'ai fait quelques recherches à ce sujet, mais les solutions possibles que j'ai pu trouver, telles que la migration de la base de données, ne fonctionneront tout simplement pas. Faites le moi savoir si vous voulez voir une partie spécifique de mon code.

Ce qui suit est une erreur:

OperationalError dans / admin / polls / question / 1 / change / no table: main.auth_user__old Méthode de demande: POST URL de la demande: http://127.0.0.1:8000/admin/polls/question/1/change/ Version Django: 2.1.4 Type d'exception: OperationalError Valeur d'exception: aucune table de ce type: main.auth_user__old Emplacement de l'exception: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base .py in execute, ligne 296 Exécutable Python: / Utilisateurs / gfioravante / Projets / test_app / ta_env / bin / python3 Version Python: 3.7.1 Chemin Python:
['/ Users / gfioravante / Projets / test_app / test_app', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/ usr / local /Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7 ',' /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/ lib / python3.7 / lib-dynload ',' /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages '] Heure du serveur: mer., 5 déc. 2018 16:45:00 +0000

et le retraçage:

Environnement:

Méthode de demande: POST URL de la demande: http://127.0.0.1:8000/admin/polls/question/1/change/

Version Django: 2.1.4 Version Python: 3.7.1 Applications installées: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django .contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles '] Middleware installé: [' django.middleware.security.SecurityMiddleware ',' django.contrib.sessions.middleware.SessionMiddleware ',' django .middleware.common.CommonMiddleware ',' django.middleware.csrf.CsrfViewMiddleware ',' django.contrib.aut.middleware.AuthenticationMiddleware ',' django.contrib.messware.MessageMiddleware.MessageMiddleware ',' django. ']

Traceback:

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" dans _execute 85. return self.cursor.execute (sql, params)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" dans l'exécution 296. return Database.Cursor.execute (auto, requête, params)

L'exception ci-dessus (pas de table de ce type: main.auth_user__old) était 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" au centre de 34. response = get_response (request)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" dans _get_response 126. response = self.process_exception_by_middleware (e, request)

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 l'emballage 604. return self.admin_site.admin_view (view) (* args, ** kwargs)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" dans _wrapped_view 142. response = view_func (request, * arguments, ** kwargs)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py" dans _wrapped_view_func 44. response = view_func (request, * arguments, ** kwargs)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" en 223 intérieur. Voir la vue de retour (request, * args, ** kwargs)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" dans change_view 1640. return self.changeform_view (request, 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. return 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. response = view_func (request, * arguments, ** kwargs)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" dans changeform_view 1525. return self._changeform_view (request, 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. self.log_change (request, 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 l’opération 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. return 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 la création 413. obj.save (force_insert = True, à l'aide de = self.db )

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" de la sauvegarde 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. updated = self._save_table (raw, cls, force_insert, force_upert, force_update , using, 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, using, fields , 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. using = using, raw = raw)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" dans manager_method 82. return 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. return query.get_compiler (using = using) .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. cursor.execute (sql, params)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" dans l'exécution 100. return super (). Execute (sql, params)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" à exécuter 68. return self._execute_with_wrappers (sql, paramètres, many = False, executor = self._execute)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" dans _execute_with_wrappers 77. return executor (sql, paramètres, beaucoup, contexte)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" dans _execute 85. return self.cursor.execute (sql, params)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" dans la sortie 89. relance dj_exc_value.with_traceback (traceback) à partir d'exc_value

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" dans _execute 85. return self.cursor.execute (sql, params)

Fichier "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" dans l'exécution 296. return Database.Cursor.execute (auto, requête, params)

Type d'exception: OperationalError dans / admin / polls / question / 1 / change / Exception Valeur: aucune table de ce type: main.auth_user__old


Oui j'ai la même erreur sur Django 2.1.4

OperationalError (pas de table de ce type: main.auth_user__old)

J'ai supprimé Django 2.1.4 installer Django 1.11.16 le problème résolu

Installer Django 1.11.16 ne me sert à rien. Il montrera "ModuleNotFoundError" et "FileNotFoundError". Puis j'ouvre le fichier "db.sqlite3", copie les tables "auth_user" et "django_content_type" avec struct et data, remplace le nom de la table par "auth_user__old" et "django_content_type__old". Ça a marché! J'espère que c'est utile pour le confus.


Éliminez facilement ce problème en maintenant les étapes suivantes:

  1. garder la version 2.1.5 de Django (le problème résolu dans cette version) pip install django==2.1.5
  2. Supprimer la base de données SQLite
  3. python manage.py makemigrations nouveau python manage.py makemigrations puis python manage.py migrate
  4. Démarrer le serveur python manage.py runserver

TERMINÉ!


Il y a juste 4 choses que j'ai faites sur la ligne de commande et cela a corrigé la mienne.

  1. ctrl + c (arrêter le serveur)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver (serveur de démarrage)

J'ai eu le même problème, sauf que j'avais 2 bases de données sqlite et routeur de base de données personnalisé. J'ai réussi à le faire fonctionner en rétrogradant Django à 1.11.20 sans avoir besoin de recréer les bases de données.


J'ai résolu le problème en changeant certains de mes modèles. J'ai eu un projet nommé et un projet nommé. Les tables de base de données ont été confondues et m'ont jeté cette erreur.


J'ai résolu le problème en mettant à jour Django de 2.1.4 à 2.1.5, mais je devais reconstruire le projet à nouveau, car le bogue semble être en quelque sorte lié aux objets que j'ai insérés dans la base de données en utilisant l'ancienne version de Django.


La même chose m'est arrivé, très frustrant. J'utilise anaconda pour mes environnements. J'ai constaté que je ne pouvais pas supprimer sqlite sans réinstaller immédiatement la version la plus récente de sqlite. Essayer une ancienne version de Django ne semblait pas non plus fonctionner. La seule solution qui a fonctionné pour moi consiste à utiliser une base de données PostgreSQL. Ce n'est certainement pas idéal, mais je prévois d'utiliser la base de données PostgreSQL à l'avenir, ce n'est donc pas une perte de temps totale. Si vous vous trouvez au même endroit que moi, cette video peut vous être utile si vous souhaitez savoir comment connecter la base de données PostgreSQL à votre projet django.

Vous devez installer la base de données postgreSQL avant d’apporter les modifications dans settings.py. Pour l’installation, il suffit de cliquer sur Suivant pour accéder à toutes les options. Cependant, rappelez-vous le nom d'utilisateur et le mot de passe que vous utilisez lors de l'installation.


Le problème est dû au comportement modifié de l'instruction ALTER TABLE RENAME dans SQLite 3.26.0 (voir la note de compatibilité ). Ils ont également introduit l' PRAGMA legacy_alter_table = ON afin de maintenir la compatibilité avec les versions précédentes. La prochaine version 2.1.5 de Django utilise l'instruction citée précédemment comme correctif. C'est prévu le 1er janvier 2019.


Ouvrez => / VotreAppFolder / migrations / U pour voir les fichiers en cours de migration, comme " 0001_initial.py ", supprimez tous ces fichiers. Et lancez la commande suivante 1- python manage.py makemigrations 2- python manage.py migrate Hope, votre problème doit être résolu :)


Pas:

  1. Désinstallez Django en cours de votre ENV. Supprimez simplement le dossier "anaconda3 / envs / yourenv / lib / python3.7 / site-packages / Django toutes les versions .. * Remarque: les utilisateurs d’Anaconda ne doivent comprendre que comment désinstaller un paquet de votre ENV.

  2. Allez sur Github.com/django/django.

  3. Téléchargez le rapport sous forme de fichier zip.

  4. Extrait zip.

  5. Basculez vers votre ENV.

  6. Entrez le dossier extrait.

  7. Lancez "python setup.py install" et installez Django.

  8. Supprimez votre fichier db.sqlite3 précédent. Appliquez à nouveau les migrations pour créer un nouveau fichier db.sqlite3.

* Remarque: je ne sais pas comment corriger le fichier de base précédent et éviter la perte de données. Alors s'il vous plaît dites-moi si vous savez.

  1. Run Server.

Félicitations! Cela fonctionne bien maintenant.

Mise à jour du dernier django de janvier à partir de la version officielle de Django.


Pour les autres qui ne souhaitent pas rétrograder les logiciels, vous pouvez vous rendre dans votre fichier settings.py et dans le dict de DATABASES , vous pouvez remplacer .sqlit3 par .postgresql et, juste en dessous, changer le db.sqlit3 en db.sql . Cela change votre base de données par défaut en utilisant postgreSQL.

Pour ce faire, vous devrez pip install psycopg2 par pip install psycopg2 .

Supprimez votre fichier db.sqlite3 (si vous en avez un / ne vous souciez pas de perdre son contenu) et tout ce qui n'est pas le fichier __init__.py dans le dossier de migration de votre application. Une fois que vous avez fait tout cela, vous pouvez exécuter python manage.py makemigrations et python manage.py migrate et cela devrait fonctionner :)

J'espère que j'ai pu aider quelqu'un!



si vous ne voulez pas changer votre version de Django, alors Database doit être le changement. Utilisez mes recommandations PostgreSQL. Le problème serait résolu après makemigrations et migrer.