#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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/049.e7e1902abdeadc1651a0215745c4afae%40djangoproject.com.