Opened 15 years ago

Last modified 15 years ago

#12387 closed

TransactionRollbackError when there are more ForeignKey's to one table — at Initial Version

Reported by: szymon@… Owned by: nobody
Component: Uncategorized Version: 1.1
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Postgres backend. When there is more references to one table with ForeignKey in same model sometimes there is thrown Exception (not always).

File "/usr/local/lib/python2.6/site-packages/django/db/models/base.py", line 410, in save

self.save_base(force_insert=force_insert, force_update=force_update)

File "/usr/local/lib/python2.6/site-packages/django/db/models/base.py", line 495, in save_base

result = manager._insert(values, return_id=update_pk)

File "/usr/local/lib/python2.6/site-packages/django/db/models/manager.py", line 177, in _insert

return insert_query(self.model, values, kwargs)

File "/usr/local/lib/python2.6/site-packages/django/db/models/query.py", line 1087, in insert_query

return query.execute_sql(return_id)

File "/usr/local/lib/python2.6/site-packages/django/db/models/sql/subqueries.py", line 320, in execute_sql

cursor = super(InsertQuery, self).execute_sql(None)

File "/usr/local/lib/python2.6/site-packages/django/db/models/sql/query.py", line 2369, in execute_sql

cursor.execute(sql, params)

TransactionRollbackError: deadlock detected
DETAIL: Process 40975 waits for ShareLock on transaction 172977254; blocked by process 40961.
Process 40961 waits for ShareLock on transaction 172977277; blocked by process 40975.
HINT: See server log for query details.
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."foo_bar" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x"

Example of model:

class bar(models.Model):

baz = models.ForeignKey('some.model', related_name='sm')
other = models.ForeignKey('some.model', related_name='so')

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top