[Django] #35394: Warning if 'postgres' database has been rename (e.g. DigitalOcean managed)

12 views
Skip to first unread message

Django

unread,
Apr 21, 2024, 11:05:24 PM4/21/24
to django-...@googlegroups.com
#35394: Warning if 'postgres' database has been rename (e.g. DigitalOcean managed)
-------------------------------------+-------------------------------------
Reporter: Jeffry | Owner: nobody
Babb |
Type: | Status: new
Cleanup/optimization |
Component: Database | Version: 5.0
layer (models, ORM) | Keywords: postgres default db
Severity: Normal | name
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
This warning is thrown if the 'postgres' database does not exist on the
server. DigitalOcean renames this database to 'defaultdb' which seems to
raise this error in dango/db/backends/base/base.py


{{{
except (Database.DatabaseError, WrappedDatabaseError):
if cursor is not None:
raise
warnings.warn(
"Normally Django will use a connection to the 'postgres'
database "
"to avoid running initialization queries against the
production "
"database when it's not needed (for example, when running
tests). "
"Django was unable to create a connection to the
'postgres' database "
"and will use the first PostgreSQL database instead.",
RuntimeWarning,
)
}}}

I have searched in the LIBPQ parameters can can't find a setting that
allows me to specify this name change as Django seems to have hard-coded
the search for the 'postgres' db name or is looking for it in a key called
'service' around line 193 and 218 in base.py.
--
Ticket URL: <https://code.djangoproject.com/ticket/35394>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Apr 22, 2024, 4:37:49 PM4/22/24
to django-...@googlegroups.com
#35394: Warning if 'postgres' database has been rename (e.g. DigitalOcean managed)
-------------------------------------+-------------------------------------
Reporter: Jeffry Babb | Owner: nobody
Type: | Status: closed
Cleanup/optimization |
Component: Database layer | Version: 5.0
(models, ORM) |
Severity: Normal | Resolution: needsinfo
Keywords: postgres default db | Triage Stage:
name | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Natalia Bidart):

* resolution: => needsinfo
* status: new => closed

Comment:

Hello Jeffry, thank you for taking the time to submit this report.

We would need more information to fully triage the issue, as I only see
the `postgres` DB name hardcoded in two places:
1. `get_connection_params` in
[https://github.com/django/django/blob/main/django/db/backends/postgresql/base.py#L282
django/db/backends/postgresql/base.py], specifically when `NAME` is None.
2. `settings_to_cmd_args_env` in
[https://github.com/django/django/blob/main/django/db/backends/postgresql/client.py#L28
django/db/backends/postgresql/client.py] when the dbname is unset.

A few questions:

1. Could you please add specific details on when and where are you getting
the warning? The warning text mentions that the `postgres` DB may be used
in context such as things like running tests. Are you running the test
suite in Heroku for example?
2. Is there a specific issue that this warning triggers for you? If
everything is working well, you could just ignore the specific warning
with filters.
3. Can you provide detailed instructions for reproducing locally/outside
Heroku? Have you double check that the DB name is set properly?
4. Did you try seeking initial help in the
[https://forum.djangoproject.com/ Django Forum], to double check whether
this is truly an issue in Django and not in your setup?

I'll be closing this ticket as `needsinfo` following the
[https://docs.djangoproject.com/en/dev/internals/contributing/triaging-
tickets/#closing-tickets ticket triaging process].
--
Ticket URL: <https://code.djangoproject.com/ticket/35394#comment:1>
Reply all
Reply to author
Forward
0 new messages