sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo depurar:la transacción actual de error interno se cancela, los comandos se ignoran hasta el final del bloque de transacción

En la mayoría de los casos, esto significa que el anterior La declaración SQL no se pudo ejecutar. En este caso deberías:

  1. Habilitar SQL registro , vea el siguiente fragmento para pegarlo en settings.py

  2. Establecer DEBUG=1 , o SQL no se registrará

  3. Ejecute runserver de nuevo , y debería ver todas las consultas SQL en la consola

  4. Ejecute las últimas consultas SQL directamente en su base de datos , luego debe encontrar qué consultas fallan y luego debería poder depurarlas, o abrir una nueva pregunta que sea específica de la consulta que causa el problema. Puede usar phpMyAdmin, o directamente un cliente CLI, o cualquier cliente de base de datos, para ejecutar las consultas SQL una por una hasta que encuentre la que necesita atención.

Configuración de registro de SQL:

LOGGING = { 
   'version': 1,
   'disable_existing_loggers': True,
   'formatters': {
       'simple': {
           'format': '%(levelname)s %(message)s',
       },  
   },  
   'handlers': {
       'console':{
           'level':'DEBUG',
           'class':'logging.StreamHandler',
           'formatter': 'simple'
       },  
   },  
   'loggers': {
       'django': {
           'handlers': ['console'],
           'level': 'DEBUG',
       },  
   }   
}

Si esta configuración no proporciona ninguna salida de consola adicional con runserver , siéntete libre de probar ejemplo de proyecto de prueba de django-autocomplete-light :

  1. Lea y pegue los comandos de instalación en /tmp

  2. Cambie el directorio a autocomplete_light_env/src/django-autocomplete-light/test_project

  3. Abra test_project/settings.py , reemplace el LOGGING configuración por el de arriba

  4. Ejecute el servidor y abra su navegador

Su consola se verá así:

Validating models...

0 errors found
Django version 1.4.1, using settings 'test_project.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
DEBUG (0.001) SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = taggable  AND "django_content_type"."app_label" = charfield_autocomplete ); args=('taggable', 'charfield_autocomplete')
DEBUG (0.000) 
        SELECT DISTINCT "tagging_tag".id, "tagging_tag".name
        FROM
            "tagging_tag"
            INNER JOIN "tagging_taggeditem"
                ON "tagging_tag".id = "tagging_taggeditem".tag_id
            INNER JOIN "charfield_autocomplete_taggable"
                ON "tagging_taggeditem".object_id = "charfield_autocomplete_taggable"."id"

        WHERE "tagging_taggeditem".content_type_id = 11

        GROUP BY "tagging_tag".id, "tagging_tag".name

        ORDER BY "tagging_tag".name ASC; args=[]