#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.

Reply via email to