[4.0.x] Fixed #33160 -- Avoided suppressing query errors in _nodb_cursor() on PostgreSQL.
Backport of 98c8bf1cee
from main
This commit is contained in:
parent
0a49276065
commit
81bb0ae221
|
@ -304,10 +304,13 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
|||
|
||||
@contextmanager
|
||||
def _nodb_cursor(self):
|
||||
cursor = None
|
||||
try:
|
||||
with super()._nodb_cursor() as cursor:
|
||||
yield cursor
|
||||
except (Database.DatabaseError, WrappedDatabaseError):
|
||||
if cursor is not None:
|
||||
raise
|
||||
warnings.warn(
|
||||
"Normally Django will use a connection to the 'postgres' database "
|
||||
"to avoid running initialization queries against the production "
|
||||
|
|
|
@ -103,6 +103,11 @@ class Tests(TestCase):
|
|||
with connection._nodb_cursor():
|
||||
pass
|
||||
|
||||
def test_nodb_cursor_reraise_exceptions(self):
|
||||
with self.assertRaisesMessage(DatabaseError, 'exception'):
|
||||
with connection._nodb_cursor():
|
||||
raise DatabaseError('exception')
|
||||
|
||||
def test_database_name_too_long(self):
|
||||
from django.db.backends.postgresql.base import DatabaseWrapper
|
||||
settings = connection.settings_dict.copy()
|
||||
|
|
Loading…
Reference in New Issue