mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #21235 -- Disabled savepoints for old versions of SQLite.
Thanks Ramiro for the report.
This commit is contained in:
parent
8d75d1e1bc
commit
91547772e0
@ -393,12 +393,16 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
|||||||
BaseDatabaseWrapper.close(self)
|
BaseDatabaseWrapper.close(self)
|
||||||
|
|
||||||
def _savepoint_allowed(self):
|
def _savepoint_allowed(self):
|
||||||
|
# Two conditions are required here:
|
||||||
|
# - A sufficiently recent version of SQLite to support savepoints,
|
||||||
|
# - Being in a transaction, which can only happen inside 'atomic'.
|
||||||
|
|
||||||
# When 'isolation_level' is not None, sqlite3 commits before each
|
# When 'isolation_level' is not None, sqlite3 commits before each
|
||||||
# savepoint; it's a bug. When it is None, savepoints don't make sense
|
# savepoint; it's a bug. When it is None, savepoints don't make sense
|
||||||
# because autocommit is enabled. The only exception is inside atomic
|
# because autocommit is enabled. The only exception is inside 'atomic'
|
||||||
# blocks. To work around that bug, on SQLite, atomic starts a
|
# blocks. To work around that bug, on SQLite, 'atomic' starts a
|
||||||
# transaction explicitly rather than simply disable autocommit.
|
# transaction explicitly rather than simply disable autocommit.
|
||||||
return self.in_atomic_block
|
return self.features.uses_savepoints and self.in_atomic_block
|
||||||
|
|
||||||
def _set_autocommit(self, autocommit):
|
def _set_autocommit(self, autocommit):
|
||||||
if autocommit:
|
if autocommit:
|
||||||
|
Loading…
Reference in New Issue
Block a user