2016-11-28 4 views
1

하루를 지낸 후 &이 문제를 해결하기 위해 시간을내어 여기에서 질문하십시오.파이어 버드 (Firebird) 업데이트 성명서가 동결

우리는 Firebird를 6 년에 걸쳐 사용하고 현재 버전 2.5.2로 업데이트하여 오래 전부터 UPDATE 문을 사용할 수없는 문제를 만났습니다.

SQL 문은 기본 키와 함께 "where"조건이 사용되는 경우에도 정상입니다.

문제 :) PHP 스크립트에서이 Flamerobin 또는 IBQ의 정지에서 직접) 내부 서버 오류 500
B를 반환
을 실행하고 모든

    에 응답하지 : 업데이트에 클릭 후 붙어 가고있다
  1. 힌트 : 바로 깨끗한 파이어 후에 작동하고 워킹 않네 SQL은 (& 시작 정지)하지만가는 동안 다시 부착하는 후
  2. 힌트 : 선택이 있거나, 문제가
  3. 힌트는 UPDATE 만입니다 : I 디 D는 모두 여기에 설명 https://www.ibphoenix.com/resources/documents/how_to/doc_5 이 오류 없었다하지만 문제는
  4. 힌트를 발생 redump 후 (gfix ​​-v -full에 나에게 오류를주고 있었다 데이터베이스 파일의 redump) : 우리는 이상의 데이터베이스 파일과 동일한 구성을 실행하는 서버를 더이 그러나 이것은 한 서버의 하나의 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)) 

임 거의 손실, 확인하는 어떤 아이디어에서. FB 나 서버 설정에서 아무것도 변경하지 않았다는 것을 알려주고 싶습니다.

도움 주셔서 감사합니다.

+0

Firebird 2.5.2가 최신 버전이 아니므로 적어도 2.5.6으로 업그레이드하는 것이 좋습니다. 그러나 동시 트랜잭션의 잠금과 '대기'트랜잭션의 사용으로 인한 문제 일 수도 있습니다. 대기 시간이없는 트랜잭션을 사용하거나 시간 초과와 함께 대기 트랜잭션을 사용하십시오. –

+0

EDIT : 이제 2.5.5가 실행 중이고 타임 아웃을 지정하려고합니다 : DeadlockTimeout을 10으로 지정하려고합니다. –

답변

0

모든 것은 백그라운드에서 실행되는 많은 스크립트 (cron에서 실행)로 인해 몇 시간 동안 커밋하지 않고 열린 트랜잭션을 수행했기 때문에 발생했습니다. 다시 OK.