#33153: "database table is locked" error on SQLite when testing with mirror
database
---------------------------------------------+------------------------
Reporter: Adam Johnson | Owner: nobody
Type: Bug | Status: new
Component: Testing framework | Version: 4.0
Severity: Release blocker | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
---------------------------------------------+------------------------
Requirements:
* project uses SQLite for database
* has a "replica" db alias set up as test mirror of default
* `TestCase` has `databases = ["default", "replica"]`
* Model is either from or two in a FK relationship
* `TestCase` tries to create an instance of that model
Result: The SQLite foreign key check, `PRAGMA foreign_key_check`, fails
with an `OperationalError` like:
{{{
Traceback (most recent call last):
File "/.../site-packages/django/test/testcases.py", line 278, in
_setup_and_call
self._post_teardown()
File "/.../site-packages/django/test/testcases.py", line 1023, in
_post_teardown
self._fixture_teardown()
File "/.../site-packages/django/test/testcases.py", line 1266, in
_fixture_teardown
connections[db_name].check_constraints()
File "/.../site-packages/django/db/backends/sqlite3/base.py", line 322,
in check_constraints
violations = cursor.execute('PRAGMA foreign_key_check').fetchall()
File "/.../site-packages/django/db/backends/utils.py", line 66, in
execute
return self._execute_with_wrappers(sql, params, many=False,
executor=self._execute)
File "/.../site-packages/django/db/backends/utils.py", line 75, in
_execute_with_wrappers
return executor(sql, params, many, context)
File "/.../site-packages/django/db/backends/utils.py", line 84, in
_execute
return self.cursor.execute(sql, params)
File "/.../site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/.../site-packages/django/db/backends/utils.py", line 82, in
_execute
return self.cursor.execute(sql)
File "/.../site-packages/django/db/backends/sqlite3/base.py", line 414,
in execute
return Database.Cursor.execute(self, query)
django.db.utils.OperationalError: database table is locked: core_author
}}}
Reproduction project to follow.
--
Ticket URL: <https://code.djangoproject.com/ticket/33153>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/053.926838477be7183f6b111b08de142891%40djangoproject.com.