Estaba siguiendo el primer tutorial de la aplicación de los documentos oficiales de Django y recibí este error al intentar guardar algunos cambios realizados a través de la página de administración. Investigué un poco al respecto, pero las posibles soluciones que pude encontrar, como migrar la base de datos, simplemente no funcionarán. Solo avíseme si desea ver alguna parte específica de mi código.

El siguiente es un error:

OperationalError at /admin/polls/question/1/change/ no such table: main.auth_user__old Request Method: POST Request URL: http://127.0.0.1:8000/admin/polls/question/1/change/ Django Version: 2.1.4 Exception Type: OperationalError Exception Value: no such table: main.auth_user__old Exception Location: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 296 Python Executable: /Users/gfioravante/Projects/test_app/ta_env/bin/python3 Python Version: 3.7.1 Python Path:
['/Users/gfioravante/Projects/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'] Server time: Wed, 5 Dec 2018 16:45:00 +0000

y el rastreo:

Environment:

Request Method: POST Request URL: http://127.0.0.1:8000/admin/polls/question/1/change/

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

Traceback:

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" in execute 296. return Database.Cursor.execute(self, query, params)

The above exception (no such table: main.auth_user__old) was the direct cause of the following exception:

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request)

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 124. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in wrapper 604. return self.admin_site.admin_view(view)(*args, **kwargs)

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

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" in inner 223. return view(request, *args, **kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in change_view 1640. return self.changeform_view(request, object_id, form_url, extra_context)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapper 45. return bound_method(*args, **kwargs)

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in changeform_view 1525. return self._changeform_view(request, object_id, form_url, extra_context)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in _changeform_view 1571. self.log_change(request, new_object, change_message)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in log_change 826. change_message=message,

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py" in log_action 35. change_message=change_message,

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method 82. return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" in create 413. obj.save(force_insert=True, using=self.db)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in save 718. force_update=force_update, update_fields=update_fields)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in save_base 748. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in _save_table 831. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in _do_insert 869. using=using, raw=raw)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method 82. return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" in _insert 1136. return query.get_compiler(using=using).execute_sql(return_id)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 1289. cursor.execute(sql, params)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in execute 100. return super().execute(sql, params)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in execute 68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute_with_wrappers 77. return executor(sql, params, many, context)

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" in exit 89. raise dj_exc_value.with_traceback(traceback) from exc_value

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" in execute 296. return Database.Cursor.execute(self, query, params)

Exception Type: OperationalError at /admin/polls/question/1/change/ Exception Value: no such table: main.auth_user__old

respuesta

Deshazte de este problema fácilmente manteniendo los siguientes pasos:

  1. mantener la versión 2.1.5 de django (el problema abordado en esta versión) pip install django==2.1.5
  2. Eliminar la base de datos SQLite
  3. Migrar de nuevo python manage.py makemigrationsy luegopython manage.py migrate
  4. Inicie el servidorpython manage.py runserver

¡HECHO!

Me acabo de encontrar con esto, parece estar relacionado con https://code.djangoproject.com/ticket/29182 . Por ahora, puede degradar su versión de sqlite a una versión anterior a la 2.6 (por ejemplo, 2.5.1)

Acabo de hacer esto y resolvió el problema:

pip install Django --upgrade

Entonces:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

Esto es lo que hice para resolver este problema:

  1. Ir al entorno virtual e instalar[email protected]

    pip install django==2.1.7
    
  2. Elimine el db.sqlite3archivo en su carpeta raíz.

  3. Cree el nuevo db.sqlite3en su carpeta raíz.
  4. Vuelva a ejecutar las migraciones:

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

Ahora debería estar funcionando bien.

El problema es causado por el comportamiento modificado de la ALTER TABLE RENAMEdeclaración en SQLite 3.26.0 (ver nota de compatibilidad ). También introdujeron la PRAGMA legacy_alter_table = ONdeclaración para mantener la compatibilidad con versiones anteriores. La próxima versión 2.1.5 de Django utiliza la declaración mencionada anteriormente como revisión. Se espera para el 1 de enero de 2019.

ve a esta carpeta django/db/backends/sqlite3

copia de seguridad schema.pydel archivo a otra carpeta

abre el schema.py original en un editor de texto

allí puedes ver un fragmento de código como

    def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
     # disabled. Enforce it here for the duration of the schema edition.
     if not self.connection.disable_constraint_checking():
         raise NotSupportedError(
             'SQLite schema editor cannot be used while foreign key '
             'constraint checks are enabled. Make sure to disable them '
             'before entering a transaction.atomic() context because '
             'SQLite3 does not support disabling them in the middle of '
             'a multi-statement transaction.'
         )
     self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
     return super().__enter__()

coméntelos y pegue el siguiente fragmento de código

     def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
    # disabled. Enforce it here for the duration of the transaction.
    self.connection.disable_constraint_checking()
    self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
    return super().__enter__()

Esto funcionó para mí. (la copia de seguridad para schema.py es en caso de que el trabajo salga mal; D)

para más información

https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef

para mí, fue desde mi versión de django (que era 2.1) instale una versión superior (utilicé 2.1.5 por algunas razones) ** elimine db.sqlite3, y todo en la carpeta de migración excepto init .py ejecute el comando:

pip install django==2.1.5 --upgrade
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

Resolví el problema actualizando Django de 2.1.4 a 2.1.5 ejecutando

pip install --upgrade django==2.1.5

pero tuve que reconstruir el proyecto nuevamente, porque el error parece estar relacionado de alguna manera con los objetos que inserté en la base de datos usando la versión anterior de Django.


ACTUALIZAR:

En lugar de eliminar todo el proyecto, fue suficiente eliminar solo la base de datos. Y luego a correr

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
  1. Primero, detenga el servidor y elimine db.sqlite3.

  2. Entonces, necesitas ejecutar:

    python manage.py makemigrations
    python manage.py migrate

  3. Después de ejecutar este comando, debe crear un superusuario. Para crear un superusuario, ejecute:
    python manage.py createsuperuser
    Ingrese los detalles del superusuario allí.

  4. Vuelva a ejecutar su servidor.

Ahí tienes

Me ha pasado lo mismo, muy frustrante. Uso anaconda para mis entornos, descubrí que no podía eliminar sqlite sin reinstalar inmediatamente la versión más actualizada de sqlite. Probar una versión anterior de django tampoco pareció funcionar. La única solución que me ha funcionado es usar una base de datos PostgreSQL. Ciertamente no es lo ideal, pero planeo utilizar la base de datos PostgreSQL en el futuro, por lo que no fue una completa pérdida de tiempo. Si te encuentras en el mismo lugar que yo, entonces este video puede ser útil si quieres saber cómo conectar la base de datos PostgreSQL con tu proyecto django.

Deberá instalar la base de datos postgreSQL antes de realizar los cambios en settings.py, la instalación es más o menos hacer clic en Siguiente en todas las opciones. Sin embargo, recuerde el nombre de usuario y la contraseña que utiliza durante la instalación.

Incluso después de actualizar a la última versión de Django 2.2.12 y ejecutar migrateel script oficial de reconstrucción de la base de datos , recibí el mismo error con __old_: django.db.utils.IntegrityError: The row in table 'djangocms_blog_post_translation' with primary key '2' has an invalid foreign key: djangocms_blog_post_translation.master_id contains a value '2' that does not have a corresponding value in djangocms_blog_post__old.id.

Aquí está mi truco:

  1. volcar el contenido de la base de datos a sql:sqlite3 my_db.db .dump > my_db.sql
  2. ejecutar una expresión regular sobre la salida sql, reemplazando __old" ("id")con" ("id") DEFERRABLE INITIALLY DEFERRED
  3. eliminar el archivo de base de datos anterior
  4. cargue el sql modificado en una nueva base de datos:sqlite3 my_db.db < my_db.sql
  5. ??? & ganancia

Abrir => /YourAppFolder/migrations/ Debería ver los archivos de migración como ' 0001_initial.py ' eliminar todos estos archivos. Y ejecute el siguiente comando 1- python manage.py makemigrations 2- python manage.py migrate Espero, debe resolver su problema

Para el problema anterior y la solución es:

1) Vaya a la terminal y escriba pip install django==2.1.7o la última versión de django

2) Después de la instalación, en el terminal escriba python manage.py makemigrationsy luegopython manage.py migrate

3) En la terminal, inicie el servidor con códigopython manage.py runserver

4) Inicie sesión en el servidor de administración con la contraseña y agregue el producto. Agregará el producto con éxito.

Para otros que no quieren degradar ningún software, pueden dirigirse a su settings.pyarchivo y en el DATABASESdictado, pueden reemplazarlo .sqlit3con .postgresql, y justo debajo, cambiar db.sqlit3a db.sql. Esto cambia su base de datos predeterminada para usar postgreSQL.

Al hacerlo, deberá pip install psycopg2.

Elimine su db.sqlite3archivo (si tiene uno o no le importa perder lo que contiene) y todo lo demás que no sea el __init__.pyarchivo en la carpeta de migración de su aplicación. Una vez que haya hecho todo eso, puede ejecutar python manage.py makemigrationsPython manage.py migratey luego debería funcionar :)

¡Espero haber podido ayudar a alguien!

mantener Django versión 2.1.5

This issue is adressed only in this version of Django
  • pip instalar django==2.1.5
  • Eliminar la base de datos SQLite
  • Ejecutar migración
  • Inicie el servidor python manage.py runserver

Esto resuelve el problema anterior.

Hay solo 4 cosas que hice en la línea de comandos y arregló la mía.

  1. ctrl + c(detener servidor)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver(iniciar servidor)

Tuve el mismo problema, excepto que tenía 2 bases de datos sqlite y un enrutador de base de datos personalizado. Logré que funcionara degradando Django a 1.11.20 y sin necesidad de volver a crear las bases de datos.

Para aquellos que no pueden resolver este error con las respuestas anteriores, si ha creado su aplicación con su nombre "principal", este error puede ocurrir debido al mismo problema con el nombre de la aplicación. Así que intente cambiar el nombre de su aplicación "principal" a otro.

necesita actualizar Django, este problema se solucionó en este PR https://github.com/django/django/pull/10733

Resolví el problema cambiando algunos de mis modelos. Tenía un proyecto con nombre y un proyecto con nombre. Las tablas de la base de datos se confundieron y me arrojaron este error.

He resuelto este problema usando a continuación:

1) Eliminar el db.sqlit3

2) el directorio de la aplicación elimina todo en pycache

3) administrar.py realizar migraciones, administrar.py migrar, administrar.py crear superusuario y luego administrar.py servidor de ejecución.

Tuve el mismo problema y lo solucioné haciendo lo siguiente:

1) Obtenga la última djangoversión

2) obtener la última SQL Liteversión

3) eliminar db.sqlite3el archivo de su proyecto

4) Haga un pequeño cambio en models.py(por ejemplo, cambie el tamaño de un campo)

5) generar un nuevo db.sqllite3archivo ejecutando makemigrations&migrate commands

6) importar el db.sqllite3archivo recién creado enSQL Lite

Instalé/rebajé Django a la versión 2.2, esto eliminó Django 3.x

pip install django==2.2

y luego eliminé el archivo db.sqlite y luego

Lo intenté

python manage.py makemigrations,
python manage.py migrate 
python manage.py creatingsuperuser. 
  1. Actualizar Django pip install Django --upgrade

  2. Elimine el db.sqlite3archivo de la carpeta raíz de su proyecto.

  3. Cree el nuevo db.sqlite3 en su carpeta raíz volviendo a ejecutar las migraciones. python3 manage.py makemigrations

  4. Emigrar python3 manage.py migrate

Puede funcionar solo con esto o es posible que deba crear un nuevo superusuario si se eliminó.

  1. Verifique su superusuario usando
python manage.py shell
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)   

Si <QuerySet []>aparece no hay usuario. De lo contrario, compruebe si su usuario existe.

  1. Si su usuario no existe, cree uno usando python manage.py createsuperuser

Primero, actualice la versión de Django:

pip install django --upgrade

entonces

./manage.py makemigration
./manage.py migrate
./manage.py runserver

Pasos:

  1. Desinstale Django actual de su ENV. Simplemente elimine la carpeta "anaconda3/envs/yourenv/lib/python3.7/site-packages/Django todas las versiones...

    Nota : solo para usuarios de Anaconda, otros usuarios deben averiguar cómo desinstalar un paquete de su ENV.

  2. Vaya a https://github.com/django/django .

  3. Descargue el repositorio como archivo zip.

  4. Extraer código postal.

  5. Cambia a tu ENV.

  6. Ingrese a la carpeta extraída.

  7. Ejecuta "python setup.py install"e instala Django.

  8. Elimina tu db.sqlite3archivo anterior. Ahora aplique las migraciones nuevamente para crear un nuevo db.sqlite3archivo.

    Nota : no sé cómo reparar el archivo db anterior y evitar la pérdida de datos. Así que por favor dime si lo sabes.

  9. Ejecutar servidor.

¡Felicitaciones! Funciona bien ahora.

Actualice a la última versión de Django en enero desde el lanzamiento oficial de Django.

Verifique si no ha eliminado la carpeta de migración de su aplicación. Si la eliminó, intente restaurar la carpeta y elimine los archivos de migración o, si la eliminó permanentemente, cree la aplicación y copie y pegue su trabajo y

entonces

1. Delete db.sqlite3
2. python manage.py makemigrations
3. python manage.py migrate
4. python manage.py createsuperuser 

HTH :)

  1. Eliminar db.sqlite3
  2. hacer migraciones y migrar
  3. Crear nuevo superusuario

esto funciona para mi

Nota : no siga este truco si tiene algunos datos personales en Sqlite3 DB ya que va a eliminar Sqlite3 DB

Sé que se dan muchas respuestas a esta pregunta, pero solo este truco me ayuda a resolver este problema, ya que soy un principiante en Python y estoy aprendiendo Django .

  1. Detuvo la ejecución del servidor web django, Ctrl-C
  2. Eliminar el db.sqlite3
  3. Versión antigua de Django desinstalada
  4. Instale la última versión de Django con "pip install django"
  5. Elimina todas las migraciones de todas las aplicaciones de tu proyecto

Ahora ejecuta estos comandos en la terminal

  1. python manage.py makemigrations
  2. python manage.py migrate
  3. python manage.py createsuperuser(proporcionar credenciales de superusuario)
  4. python manage.py runserver

Ahora, finalmente, inicie sesión en el panel de administración con las credenciales de superusuario actualizadas e intente agregar un registro.

Mismas sugerencias en este enlace por alguien

django-2.2.7
Esto funcionó para mí -

1) Eliminar db.sqlite3 .
2) Dentro de cada aplicación, dentro de la carpeta de migraciones , elimine todo lo que no sea __init__.py .
3) Dentro de cada aplicación, elimine la carpeta __pycache__ .

No estoy seguro de si tuvo que hacerlo para todas las aplicaciones o solo para la aplicación en cuestión, pero esto funcionó para mí.