Opened 7 years ago
Last modified 7 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.