Browse Source

Fixed #30071 -- Fixed error message when a 'default' database isn't provided.

Benjy Weinberger 6 năm trước cách đây
mục cha
commit
222caab68a
2 tập tin đã thay đổi với 9 bổ sung3 xóa
  1. 2 3
      django/db/utils.py
  2. 7 0
      tests/db_utils/tests.py

+ 2 - 3
django/db/utils.py

@@ -151,11 +151,10 @@ class ConnectionHandler:
                     'ENGINE': 'django.db.backends.dummy',
                 },
             }
+        if DEFAULT_DB_ALIAS not in self._databases:
+            raise ImproperlyConfigured("You must define a '%s' database." % DEFAULT_DB_ALIAS)
         if self._databases[DEFAULT_DB_ALIAS] == {}:
             self._databases[DEFAULT_DB_ALIAS]['ENGINE'] = 'django.db.backends.dummy'
-
-        if DEFAULT_DB_ALIAS not in self._databases:
-            raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
         return self._databases
 
     def ensure_defaults(self, alias):

+ 7 - 0
tests/db_utils/tests.py

@@ -31,6 +31,13 @@ class ConnectionHandlerTests(SimpleTestCase):
         with self.assertRaisesMessage(ImproperlyConfigured, msg):
             conns[DEFAULT_DB_ALIAS].ensure_connection()
 
+    def test_no_default_database(self):
+        DATABASES = {'other': {}}
+        conns = ConnectionHandler(DATABASES)
+        msg = "You must define a 'default' database."
+        with self.assertRaisesMessage(ImproperlyConfigured, msg):
+            conns['other'].ensure_connection()
+
 
 class DatabaseErrorWrapperTests(TestCase):