Opened 4 years ago
Last modified 4 years ago
#32264 new Cleanup/optimization
Run database checks by default in some scenarios
Description ¶
#31055 disabled database checks by default in order to make tests that don't set up certain databases pass. This is great but it leads to a couple problems:
- Even with
manage.py check --deploy
as we suggest in the deployment checklist, the database configuration checks won't be run now. - Users need to name all their database aliases on the command line if running
manage.py check
. Even if--database default
was added to a deployment script early in the project, it's likely to be forgotten when adding a new database connection. - Database checks *are* run during
manage.py migrate
, but that output can be long if several migrations are executed with a higher verbosity level, so any non-error messages are likely to be missed.
I write this as I'm trying to figure out what to do with the Django-MySQL database checks which show several warnings to users to improve their database configuration. I now realize that they will mostly be disabled for users on Django 3.1.
My suggestions would be:
- Enable
--database __all__
to allow specifying all the database aliases on the command line. - Make
--deploy
imply--database __all__
. Since this is normally run around the same time asmigrate
, it shouldn't be an issue to connect to all databases at that point (and was the behaviour of Django <3.1 anyway). - Make
runserver
run database checks for all connections. This will help catch issues in development.
According to the ticket's flags, the next step(s) to move this issue forward are:
- To provide a patch by sending a pull request. Claim the ticket when you start working so that someone else doesn't duplicate effort. Before sending a pull request, review your work against the patch review checklist. Check the "Has patch" flag on the ticket after sending a pull request and include a link to the pull request in the ticket comment when making that update. The usual format is:
[https://github.com/django/django/pull/#### PR]
.
I wonder if we could make
--database
without a value alias to--database __all__
instead. Maybe it's not a good idea due as might cause an issue similar to #31621?Makes sense to me.