浏览代码

Refs #33308 -- Used psycopg's errors instead of errorcodes.

Florian Apolloner 2 年之前
父节点
当前提交
3cafb783f3
共有 2 个文件被更改,包括 8 次插入7 次删除
  1. 3 2
      django/db/backends/postgresql/creation.py
  2. 5 5
      tests/backends/postgresql/test_creation.py

+ 3 - 2
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)

+ 5 - 5
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):