Estaba siguiendo el primer tutorial de la aplicación de los documentos oficiales de Django y obtuve 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. Avísame si quieres ver alguna parte específica de mi código.
A continuación se muestra el error:
OperationalError en / admin / polls / question / 1 / change / no existe tal tabla: main.auth_user__old Método de solicitud: POST URL de solicitud: http://127.0.0.1:8000/admin/polls/question/1/change/ Versión de Django: 2.1.4 Tipo de excepción: OperationalError Valor de excepción: no existe tal tabla: main.auth_user__old Ubicación de la excepción: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base .py en ejecución, línea 296 Python Ejecutable: / Users / gfioravante / Projects / test_app / ta_env / bin / python3 Versión de Python: 3.7.1 Ruta de Python:
['/ 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 '] Hora del servidor: miércoles, 5 de diciembre de 2018 16:45:00 + 0000
y el rastreo:
Ambiente:
Método de solicitud: POST URL de solicitud: http://127.0.0.1:8000/admin/polls/question/1/change/
Versión de Django: 2.1.4 Versión de Python: 3.7.1 Aplicaciones instaladas: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django .contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles '] Middleware instalado: [' 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 ',' djangoOpiddleware.MessageMiddleware ',' djangoOpiddleware ']
Rastrear:
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en _execute 85. return self.cursor.execute (sql, params)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" en ejecución 296. return Database.Cursor.execute (self, query, params)
La excepción anterior (no existe tal tabla: main.auth_user__old) fue la causa directa de la siguiente excepción:
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" en el interior 34. response = get_response (solicitud)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" en _get_response 126. response = self.process_exception_by_middleware (e, request)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" en _get_response 124. response = wrap_callback (solicitud, * callback_args, ** callback_kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" en el contenedor 604. return self.admin_site.admin_view (ver) (* args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" en _wrapped_view 142. response = view_func (solicitud, * args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py" en _wrapped_view_func 44. response = view_func (solicitud, * args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" en la vista 223. return interna (solicitud, * args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" en change_view 1640. return self.changeform_view (request, object_id, form_url, extra_context)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" en _wrapper 45. return bound_method (* args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" en _wrapped_view 142. response = view_func (solicitud, * args, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" en changeform_view 1525. return self._changeform_view (request, object_id, form_url, extra_context)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" en _changeform_view 1571. self.log_change (request, new_object, change_message)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" en log_change 826. change_message = message,
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py" en log_action 35. change_message = change_message,
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" en manager_method 82. return getattr (self.get_queryset (), nombre) (* argumentos, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" en create 413. obj.save (force_insert = True, usando = self.db )
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" en save 718. force_update = force_update, update_fields = update_fields)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" en save_base 748. updated = self._save_table (raw, cls, force_insert, force_update , usando, update_fields)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" en _save_table 831. result = self._do_insert (cls._base_manager, using, fields , update_pk, sin procesar)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" en _do_insert 869. using = using, raw = raw)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" en manager_method 82. return getattr (self.get_queryset (), nombre) (* argumentos, ** kwargs)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" en _insertar 1136. return query.get_compiler (using = using) .execute_sql (return_id )
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" en execute_sql 1289. cursor.execute (sql, params)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en ejecución 100. return super (). Execute (sql, params)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en ejecución 68. return self._execute_with_wrappers (sql, params, many = False, ejecutor = self._execute)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en _execute_with_wrappers 77. return ejecutor (sql, params, many, context)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en _execute 85. return self.cursor.execute (sql, params)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" en la salida 89. Aumente dj_exc_value.with_traceback (traceback) desde exc_value
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" en _execute 85. return self.cursor.execute (sql, params)
Archivo "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" en ejecución 296. return Database.Cursor.execute (self, query, params)
Tipo de excepción: OperationalError en / admin / polls / question / 1 / change / Valor de excepción: no existe tal tabla: main.auth_user__old
fuente
python manage.py showmigrations
para ver qué migraciones no se han realizadoRespuestas:
Me encontré con esto yo mismo, parece estar relacionado con https://code.djangoproject.com/ticket/29182 . Por ahora, puede simplemente degradar su versión de sqlite a una versión anterior a 2.6 (por ejemplo, 2.5.1)
fuente
Deshazte de este problema fácilmente manteniendo los siguientes pasos:
pip install django==2.1.5
python manage.py makemigrations
y luegopython manage.py migrate
python manage.py runserver
¡HECHO!
fuente
Acabo de hacer esto y resolvió el problema:
Entonces:
fuente
El problema es causado por el comportamiento modificado de la
ALTER TABLE RENAME
declaración en SQLite 3.26.0 (ver nota de compatibilidad ). También introdujeron laPRAGMA legacy_alter_table = ON
declaració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 el 1 de enero de 2019.fuente
Esto es lo que hice para resolver este problema:
Vaya al entorno virtual e instale
[email protected]
pip install django==2.1.7
Elimina el
db.sqlite3
archivo en tu carpeta raíz.db.sqlite3
en tu carpeta raíz.Vuelva a ejecutar las migraciones:
Ahora debería estar funcionando bien.
fuente
vaya a esta carpeta django / db / backends / sqlite3
schema.py
archivo de copia de seguridad en otra carpetaabre el schema.py original en un editor de texto
allí puede 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 de 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
fuente
Resolví el problema actualizando Django de 2.1.4 a 2.1.5, pero tuve que reconstruir el proyecto de nuevo, 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.
fuente
Ahí tienes.
fuente
para mí, fue de mi versión de django (que era 2.1) instalar una versión superior (usé 2.1.5 por algunas razones) ** eliminar db.sqlite3, y todo en la carpeta de migración excepto el comando init .py run:
pip install django==2.1.5 --upgrade python manage.py makemigrations python manage.py migrate python manage.py createsuperuser python manage.py runserver
fuente
A mí me ha pasado lo mismo, muy frustrante. Utilizo 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 utilizar una base de datos PostgreSQL. Ciertamente no es ideal, pero estoy planeando utilizar la base de datos PostgreSQL en el futuro, por lo que no fue una completa pérdida de tiempo. Si se encuentra en el mismo lugar que yo, este video puede ser útil si desea saber cómo conectar la base de datos PostgreSQL con su 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 haciendo clic en Siguiente en todas las opciones. Sin embargo, recuerde el nombre de usuario y la contraseña que usa durante la instalación.
fuente
Porque el problema y la solución anteriores es:
1) Vaya a la terminal y escriba
pip install django==2.1.7
o la última versión de django2) Después de la instalación, en el terminal escriba
python manage.py makemigrations
y luegopython manage.py migrate
3) En la terminal, inicie el servidor con código
python manage.py runserver
4) Inicie sesión en el servidor de administración con la contraseña y agregue el producto, se agregará correctamente el producto.
fuente
Para otros que no quieran degradar ningún software, pueden dirigirse a su
settings.py
archivo y, en elDATABASES
dict, puede reemplazar.sqlit3
con.postgresql
, y justo debajo de él, cambiardb.sqlit3
adb.sql
. Esto cambia su base de datos predeterminada para usar postgreSQL.Al hacerlo, necesitará
pip install psycopg2
.Elimine su
db.sqlite3
archivo (si tiene uno / no le importa perder lo que contiene) y todo lo demás que no sea el__init__.py
archivo en la carpeta de migración de su aplicación. Una vez que haya hecho todo eso, puede ejecutarpython manage.py makemigrations
y Pythonmanage.py migrate
y luego debería funcionar :)¡Espero haber podido ayudar a alguien!
fuente
Open => / YourAppFolder / migrations / Vería los archivos migrados como ' 0001_initial.py ' eliminar todos estos archivos. Y ejecute el siguiente comando 1-
python manage.py makemigrations
2-python manage.py migrate
Hope, debe resolver su problemafuente
Incluso después de actualizar a la última versión de Django 2.2.12 y ejecutar
migrate
el script de reconstrucción de la base de datos oficial , obtuve 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:
sqlite3 my_db.db .dump > my_db.sql
__old" ("id")
con" ("id") DEFERRABLE INITIALLY DEFERRED
sqlite3 my_db.db < my_db.sql
fuente
Pasos:
Desinstale el Django actual de su ENV. Simplemente elimine la carpeta "anaconda3 / envs / yourenv / lib / python3.7 / site-packages / Django todas las versiones .. * Nota: Solo para los usuarios de Anaconda, otros usuarios deben averiguar cómo desinstalar un paquete de su ENV.
Vaya a Github.com/django/django.
Descargue el repositorio como archivo zip.
Extraer zip.
Cambie a su ENV.
Ingrese a la carpeta extraída.
Ejecute "python setup.py install" e instale Django.
Elimine su archivo db.sqlite3 anterior. Ahora aplique las migraciones nuevamente para crear un nuevo archivo db.sqlite3.
* Nota: No sé cómo reparar el archivo db anterior y evitar la pérdida de datos. Así que dígame si lo sabe.
¡Felicidades! Funciona bien ahora.
Actualice a la última versión de Django en enero desde la versión oficial de Django.
fuente
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.
fuente
Para aquellos que no pueden resolver este error con las respuestas anteriores, si ha hecho su aplicación con su nombre "principal", este error puede ocurrir debido al problema del mismo nombre de la aplicación. Así que intente cambiar el nombre de su aplicación "principal" por otro.
fuente
necesita actualizar Django, este problema se ha solucionado en este PR https://github.com/django/django/pull/10733
fuente
Resolví el problema cambiando algunos de mis modelos. Tenía un proyecto con nombre y otro con nombre. Las tablas de la base de datos se confundieron y me arrojaron este error.
fuente
He resuelto este problema usando a continuación:
1) Elimina db.sqlit3
2) el directorio de la aplicación elimina todo en pycache
3) manage.py makemigrations, manage.py migrate, manage.py createduperuser y luego manage.py runserver.
fuente
Tuve el mismo problema y lo solucioné haciendo lo siguiente:
1) Obtenga la última
django
versión2) obtenga la última
SQL Lite
versión3) eliminar
db.sqlite3
archivo de su proyecto4) Realice un pequeño cambio en
models.py
(por ejemplo, cambie el tamaño de un campo)5) genere un nuevo
db.sqllite3
archivo ejecutandomakemigrations
&migrate commands
6) importe el
db.sqllite3
archivo recién creado aSQL Lite
fuente
Instalé / bajé 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é
fuente
actualizar la versión de django: pip install django --upgrade then
fuente
Solo hay 4 cosas que hice en la línea de comandos y arregló la mía.
py manage.py makemigrations
py manage.py migrate
py manage.py runserver
(iniciar servidor)fuente
django-2.2.7
Esto funcionó para mí -
1) Elimina 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í.
fuente
migrations
archivos es una práctica que vale la pena para resolver este tipo de problemas. @rajvijay