Opened 6 years ago
Last modified 6 years ago
#30071 closed Bug
Obscure error message when no default db provided — at Initial Version
Reported by: | Benjy Weinberger | Owned by: | nobody |
---|---|---|---|
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
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).
This change moves the explicit check before the attempt to use the key,
so that no KeyError
is ever raised for DEFAULT_DB_ALIAS
. It adds
a test for this case, and also adds a test for the case where the
default db is explicitly set to an empty dict.