From 3cafb783f3f711c7413ba2b8d7c8ff750bd4d6e1 Mon Sep 17 00:00:00 2001 From: Florian Apolloner Date: Thu, 1 Dec 2022 08:35:14 +0100 Subject: [PATCH] Refs #33308 -- Used psycopg's errors instead of errorcodes. --- django/db/backends/postgresql/creation.py | 5 +++-- tests/backends/postgresql/test_creation.py | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/django/db/backends/postgresql/creation.py b/django/db/backends/postgresql/creation.py index 70c3eda566..690bf9639b 100644 --- a/django/db/backends/postgresql/creation.py +++ b/django/db/backends/postgresql/creation.py @@ -1,6 +1,6 @@ import sys -from psycopg2 import errorcodes +from psycopg2 import errors from django.core.exceptions import ImproperlyConfigured from django.db.backends.base.creation import BaseDatabaseCreation @@ -46,7 +46,8 @@ class DatabaseCreation(BaseDatabaseCreation): return super()._execute_create_test_db(cursor, parameters, keepdb) except Exception as e: - if getattr(e.__cause__, "pgcode", "") != errorcodes.DUPLICATE_DATABASE: + cause = e.__cause__ + if cause and not isinstance(cause, errors.DuplicateDatabase): # All errors except "database already exists" cancel tests. self.log("Got an error creating the test database: %s" % e) sys.exit(2) diff --git a/tests/backends/postgresql/test_creation.py b/tests/backends/postgresql/test_creation.py index 319029334d..ab2401a07e 100644 --- a/tests/backends/postgresql/test_creation.py +++ b/tests/backends/postgresql/test_creation.py @@ -13,7 +13,7 @@ try: except ImportError: pass else: - from psycopg2 import errorcodes + from psycopg2 import errors from django.db.backends.postgresql.creation import DatabaseCreation @@ -73,13 +73,13 @@ class DatabaseCreationTests(SimpleTestCase): self.check_sql_table_creation_suffix(settings, None) def _execute_raise_database_already_exists(self, cursor, parameters, keepdb=False): - error = DatabaseError("database %s already exists" % parameters["dbname"]) - error.pgcode = errorcodes.DUPLICATE_DATABASE + error = errors.DuplicateDatabase( + "database %s already exists" % parameters["dbname"] + ) raise DatabaseError() from error def _execute_raise_permission_denied(self, cursor, parameters, keepdb=False): - error = DatabaseError("permission denied to create database") - error.pgcode = errorcodes.INSUFFICIENT_PRIVILEGE + error = errors.InsufficientPrivilege("permission denied to create database") raise DatabaseError() from error def patch_test_db_creation(self, execute_create_test_db):