PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara men-debug:Kesalahan Internal, transaksi saat ini dibatalkan, perintah diabaikan hingga akhir blok transaksi

Dalam kebanyakan kasus, ini berarti bahwa sebelumnya Pernyataan SQL gagal dijalankan. Dalam hal ini Anda harus:

  1. Aktifkan SQL logging , lihat cuplikan berikut untuk ditempel di settings.py

  2. Setel DEBUG=1 , atau SQL tidak akan dicatat

  3. Jalankan runserver lagi , dan Anda akan melihat semua kueri SQL di konsol

  4. Jalankan kueri SQL terakhir langsung di database Anda , Anda kemudian harus menemukan kueri mana yang gagal dan kemudian Anda harus dapat men-debugnya - atau membuka pertanyaan baru yang khusus untuk kueri yang menyebabkan masalah. Anda dapat menggunakan phpMyAdmin, atau klien CLI secara langsung, atau klien basis data apa pun, untuk mengeksekusi kueri SQL satu per satu hingga Anda menemukan yang membutuhkan cinta.

Konfigurasi SQL Logging:

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

Jika konfigurasi ini tidak menyediakan output konsol tambahan dengan runserver , maka jangan ragu untuk mencoba django-autocomplete-light's contoh test_project :

  1. Baca dan tempel perintah instalasi di /tmp

  2. Ubah dir menjadi autocomplete_light_env/src/django-autocomplete-light/test_project

  3. Buka test_project/settings.py , ganti LOGGING konfigurasi dengan yang di atas

  4. Jalankan server dan buka browser Anda

Konsol Anda akan terlihat seperti:

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. Parameter Dinamis Data Pegas Interval Postgres tidak berfungsi

  2. plv8 nonaktifkan eksekusi dan siapkan fungsi di eval()

  3. Bagaimana cara mengatur nama atribut yang benar ke hasil agregat json dengan klausa GROUP BY?

  4. Banyak-ke-banyak di sqlalchemy. Mencegah SQLAlchemy memasukkan ke dalam tabel jika tag sudah ada

  5. Peringatan Postgres pl/java