Ve většině případů to znamená, že předchozí Příkaz SQL se nepodařilo provést. V tomto případě byste měli:
-
Povolit SQL protokolování , viz následující úryvek, který chcete vložit do settings.py
-
Nastavte DEBUG=1 nebo SQL nebude protokolováno
-
Znovu spustit runserver a měli byste vidět všechny SQL dotazy v konzole
-
Spouštějte poslední dotazy SQL přímo ve vaší databázi , měli byste pak najít, které dotazy selžou, a pak byste měli být schopni je odladit - nebo otevřít novou otázku, která je specifická pro dotaz, který způsobuje problém. Můžete použít phpMyAdmin, nebo přímo klienta CLI, nebo jiného databázového klienta, ke spouštění SQL dotazů jeden po druhém, dokud nenajdete ten, který potřebuje trochu lásky.
Konfigurace protokolování 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',
},
}
}
Pokud tato konfigurace neposkytuje žádný další výstup konzoly s runserver
, pak neváhejte a vyzkoušejte ukázkový testovací_projekt django-autocomplete-light :
-
Přečtěte si a vložte instalační příkazy do
/tmp
-
Změňte adresář na
autocomplete_light_env/src/django-autocomplete-light/test_project
-
Otevřete
test_project/settings.py
, nahraďteLOGGING
konfiguraci podle výše uvedeného -
Runserver a otevřete prohlížeč
Vaše konzole bude vypadat takto:
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=[]