2016-11-28 13 views
1

После более чем одного дня нахождения &, пытаясь решить проблему, пора попросить здесь.Заявление о обновлении Firebird

Мы используем Firebird в течение многих лет (около 6), а с текущей версией 2.5.2, обновленной давным-давно, мы столкнулись с проблемой неспособной к утверждению UPDATE.

Оператор SQL в порядке, даже условие «где» используется с первичным ключом.

Проблема: обновление будет застрял после щелчка на: выполнить
а) из PHP скрипта возврата Внутренняя ошибка сервера 500
б) непосредственно из Flamerobin или IBQ его замерзает и не отвечает на все

  1. подсказка: SQL, который не был рабочим работает сразу после чистого Жара (остановка & старта), но через некоторое время его снова собирается застрять
  2. подсказки: выбирает это или, проблема только с UPDATE
  3. подсказка: я ди d все описанные здесь https://www.ibphoenix.com/resources/documents/how_to/doc_5 (redump файла базы данных, который дает мне ошибки на gfix -v -full) после redump не было никакой ошибки, но проблема возникает
  4. подсказка: У нас есть несколько серверов под управлением той же конфигурации с несколькими файлами баз данных но это происходит только для одной таблицы в одном файле DB на одном сервере.

После некоторого исследования я, наконец, получил от этого fbtrace:

2016-11-28T14:25:28.4410 (9473:0x7f1489cb1f08) PREPARE_STATEMENT 
    phones.fdb (ATT_273856, VILAS:NONE, UTF8, TCPv4:10.1.1.195) 
    /usr/bin/flamerobin:10868 
     (TRA_78838, CONCURRENCY | WAIT | READ_WRITE) 

Statement 422749: 
------------------------------------------------------------------------------- 
UPDATE TELEFONI_CISLA SET DATUM_PRIDANI = '2011-7-3' WHERE ID = '17274' 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
PLAN (TELEFONI_CISLA INDEX (RDB$PRIMARY4)) 
     0 ms 

2016-11-28T14:25:28.4780 (9473:0x7f1489cb1f08) EXECUTE_STATEMENT_START 
    phones.fdb (ATT_273856, VILAS:NONE, UTF8, TCPv4:10.1.1.195) 
    /usr/bin/flamerobin:10868 
     (TRA_78838, CONCURRENCY | WAIT | READ_WRITE) 

Statement 422749: 
------------------------------------------------------------------------------- 
UPDATE TELEFONI_CISLA SET DATUM_PRIDANI = '2011-7-3' WHERE ID = '17274' 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
PLAN (TELEFONI_CISLA INDEX (RDB$PRIMARY4)) 

Im из идей, что проверить, почти потеряли. Просто хочу сообщить, что мы ничего не изменили в конфигурации FB или сервера.

Спасибо за любую полезную помощь.

+0

Firebird 2.5.2 - это не последняя версия, предлагаю вам обновить не менее 2.5.6. Однако ваша проблема также может быть связана с блокировкой одновременной транзакции и использованием транзакции 'WAIT'. Либо используйте транзакцию без ожидания, либо используйте транзакцию ожидания с таймаутом. –

+0

EDIT: теперь он работает 2.5.5, и я попытаюсь указать тайм-аут: DeadlockTimeout до 10 –

ответ

0

Все было вызвано одним из многих сценариев, работающих в фоновом режиме (от cron) с открытой транзакцией без фиксации в течение нескольких часов. Его ОК снова.