2013-11-18 4 views
1

Мы используем python-sybase 0.38 для транзакционных операторов обновления. Мы видим, что транзакции терпят неудачу из-за тупика в журналах Sybase, однако вызов функции python, кажется, выполняется без ошибок - исключение не генерируется (но строка не обновляется).транзакция python-sybase бесшумно сбой при обновлении

syb = Sybase.connect(server, user, password, database, auto_commit = 1) 
syb.execute("begin tran") 
syb.execute("update ....") 
syb.execute("commit tran") 

begin tran и commit tran заявления не требуется с auto_commit, однако это, как было предусмотрено код).

Мы видим сбои, возможно, в 5% случаев. Как мы обнаруживаем отказ в заявлении update?

+1

Вы пытались проверить '@@ error' или использовать' raiserror' в своей команде обновления, чтобы проверять/уведомлять, когда транзакция не завершена? Кроме того, вы можете определить, что заставляет блокировки видеть, не могли ли вы предотвратить их. –

ответ

0

Я считаю, что это проблема с версиями python-sybase вплоть до 0.39. Из release notes:

ГЛАВНЫХ ИЗМЕНЕНИЙ ПОСЛЕ 0,39:

[надрез]

Добавлена ​​DeadLockError новое исключение, когда Sybase находится в тупиковой ситуации

Мы не смогли создать 0.40 для подтверждения, но приведенное выше похоже на вероятную причину.

Смежные вопросы