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.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top