Opened 6 years ago
Closed 6 years ago
#30071 closed Bug (fixed)
Obscure error message when no default db provided
Reported by: | Benjy Weinberger | Owned by: | Benjy Weinberger |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.1 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
In ConnectionHandler
, the explicit check for the DEFAULT_DB_ALIAS
key in the databases dict comes only after an attempt to lookup that key.
If you have at least one non-default db, but no default db, no dummy
default will be created for you, and the DEFAULT_DB_ALIAS
key will
not be present. Under these circumstances, referencing the databases
property directly will give a KeyError
instead of the intended
ImproperlyConfigured
error.
Worse, if you try to access a non-default db, ensure_defaults
will
catch that KeyError
but misinterpret it as being for the non-default
db name (which does in fact exist in the dict).
Change History (4)
comment:1 by , 6 years ago
Component: | Uncategorized → Database layer (models, ORM) |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:3 by , 6 years ago
Description: | modified (diff) |
---|
comment:4 by , 6 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Type: | Uncategorized → Bug |
PR
This change moves the explicit check before the attempt to use the key,
so that no
KeyError
is ever raised forDEFAULT_DB_ALIAS
. It addsa test for this case, and also adds a test for the case where the
default db is explicitly set to an empty dict.