Postgres блокируется с обновлением и иностранными ключамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Postgres блокируется с обновлением и иностранными ключами

Сообщение Anonymous »

My Postgres Tables: < /p>

исполнители < /p>


id < /li>
Rank < /li>
Group_id ссылки Группы < /li>
< /ul>

Выступления < /p>


id < /li>
Pay < /li>
erformer_id ссылки исполнители < /li> < /ul>

группы < /p>


id < /li>
< /ul>

Мне часто нужно выбрать всех исполнителей из группы и обновить все свои ряды. Но это часто приводит к тупикам, так как я делаю выбор ... для обновления Select, а другие потоки вводят одновременно. < /p>

Пример ошибки я вижу много (в Python sqlalchemy): < /p>

DBAPIError: (TransactionRollbackError) deadlock detected
DETAIL: Process 83182 waits for ShareLock on transaction 14282922; blocked by process 83171.
Process 83171 waits for ShareLock on transaction 14282925; blocked by process 83182.
HINT: See server log for query details.
'SELECT performers.id AS performers_id, performers.rank AS performers_rank, performers.group_id AS performers_group_id \nFROM performers \nWHERE performers.group_id = %(group_id_1)s FOR UPDATE' {'group_id_1': 2}
< /code>

Я также нашел несколько примеров такого поведения. < /p>

Как это исправить? Могу ли я переключиться на другой уровень блокировки транзакций? Я бы предпочел не просто прервать и пришлось повторно - я хочу, чтобы база данных позаботилась об этом утверждении для меня. Я хочу сделать довольно просто.

Подробнее здесь: https://stackoverflow.com/questions/223 ... reign-keys
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»