PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fehlerbehebung:Interner Fehler Aktuelle Transaktion wird abgebrochen, Befehle werden bis zum Ende des Transaktionsblocks ignoriert

In den meisten Fällen bedeutet dies, dass die vorherige SQL-Anweisung konnte nicht ausgeführt werden. In diesem Fall sollten Sie:

  1. Aktivieren Sie die SQL Protokollierung , siehe das folgende Snippet zum Einfügen in settings.py

  2. Setzen Sie DEBUG=1 , oder SQL wird nicht protokolliert

  3. Runserver erneut ausführen , und Sie sollten alle SQL-Abfragen in der Konsole sehen

  4. Führen Sie die letzten SQL-Abfragen direkt in Ihrer Datenbank aus , sollten Sie dann feststellen, welche Abfragen fehlschlagen, und Sie sollten in der Lage sein, sie zu debuggen - oder eine neue Frage öffnen, die spezifisch für die Abfrage ist, die das Problem verursacht. Sie können phpMyAdmin oder direkt einen CLI-Client oder einen beliebigen Datenbank-Client verwenden, um die SQL-Abfragen eine nach der anderen auszuführen, bis Sie diejenige finden, die etwas Liebe braucht.

Konfiguration der SQL-Protokollierung:

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',
       },  
   }   
}

Wenn diese Konfiguration keine zusätzliche Konsolenausgabe mit runserver liefert , dann probieren Sie das Beispiel test_project von django-autocomplete-light :

  1. Lesen Sie die Installationsbefehle und fügen Sie sie in /tmp ein

  2. Ändern Sie das Verzeichnis in autocomplete_light_env/src/django-autocomplete-light/test_project

  3. Öffnen Sie test_project/settings.py , ersetzen Sie LOGGING Konfiguration durch den obigen

  4. Runserver und öffnen Sie Ihren Browser

Ihre Konsole sieht folgendermaßen aus:

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=[]