PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak debugować:Błąd wewnętrzny bieżąca transakcja jest przerwana, polecenia ignorowane do końca bloku transakcji

W większości przypadków oznacza to, że poprzedni Wykonanie instrukcji SQL nie powiodło się. W takim przypadku powinieneś:

  1. Włącz SQL logowanie , zobacz poniższy fragment do wklejenia w settings.py

  2. Ustaw DEBUG=1 lub SQL nie zostanie zarejestrowany

  3. Uruchom ponownie serwer runserver i powinieneś zobaczyć wszystkie zapytania SQL w konsoli

  4. Wykonaj ostatnie zapytania SQL bezpośrednio w swojej bazie danych , powinieneś następnie sprawdzić, które zapytania nie powiodły się, a następnie powinieneś być w stanie je debugować - lub otworzyć nowe pytanie, które jest specyficzne dla zapytania, które powoduje problem. Możesz użyć phpMyAdmina lub bezpośrednio klienta CLI, lub dowolnego klienta bazy danych, aby wykonać zapytania SQL jeden po drugim, aż znajdziesz ten, który potrzebuje trochę miłości.

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

Jeśli ta konfiguracja nie zapewnia żadnych dodatkowych danych wyjściowych konsoli z runserver , a następnie wypróbuj przykład test_project z django-autocomplete-light :

  1. Przeczytaj i wklej polecenia instalacji w /tmp

  2. Zmień katalog na autocomplete_light_env/src/django-autocomplete-light/test_project

  3. Otwórz test_project/settings.py , zastąp LOGGING konfiguracja według powyższego

  4. Uruchom serwer i otwórz przeglądarkę

Twoja konsola będzie wyglądać tak:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Migracja z Oracle do PostgreSQL — co powinieneś wiedzieć

  2. Przyciski radiowe ng-sprawdzone z modelem ng

  3. Problemy podczas importowania pliku txt do postgresa za pomocą php

  4. Czy istnieje sposób na ograniczenie szybkości lub ograniczenie użytkownika lub połączenia w PostgreSql?

  5. Opóźnienie lub oczekiwanie na wyciąg