#31400: base.py returns TypeError when CONN_MAX_AGE is set in a Postgresql
connection
-------------------------------------+-------------------------------------
Reporter: danb4r | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 3.0
layer (models, ORM) | Keywords: CONN_MAX_AGE,
Severity: Normal | base.py, Postgresql
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Just did a clean Django 3.0.4
Python 3.6.9, install with
Postgresql Version: 10+190ubuntu0.1 via psycopg2 (2.8.4)
inside Windows Subsystem for Linux.
When I run:
{{{
python manage.py migrate
}}}
I get:
{{{
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/backends/base/base.py", line 192, in connect
self.close_at = None if max_age is None else time.monotonic() +
max_age
TypeError: unsupported operand type(s) for +: 'float' and 'str'
}}}
The error does not happen with CONN_MAX_AGE not set:
{{{
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django_p1_master',
'USER': 'django',
'PASSWORD': 'secret',
'HOST': '127.0.0.1',
'PORT': '5432',
# 'CONN_MAX_AGE': '600',
}
}
}}}
Full error stack:
{{{
(venv-django_p1) vmuser@REDBEAST:/mnt/c/usr/workspace/django_p1/dsite$
python manage.py migrate
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/__init__.py", line 401, in
execute_from_command_line
utility.execute()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/core/management/commands/migrate.py", line 86, in handle
executor = MigrationExecutor(connection,
self.migration_progress_callback)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/migrations/loader.py", line 212, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/migrations/recorder.py", line 76, in applied_migrations
if self.has_table():
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/migrations/recorder.py", line 56, in has_table
return self.Migration._meta.db_table in
self.connection.introspection.table_names(self.connection.cursor())
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/backends/base/base.py", line 260, in cursor
return self._cursor()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/backends/base/base.py", line 236, in _cursor
self.ensure_connection()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/mnt/c/usr/workspace/django_p1/venv-django_p1/lib/python3.6/site-
packages/django/db/backends/base/base.py", line 192, in connect
self.close_at = None if max_age is None else time.monotonic() +
max_age
TypeError: unsupported operand type(s) for +: 'float' and 'str'
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/31400>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.e7e1902abdeadc1651a0215745c4afae%40djangoproject.com.