델파이 10으로 업데이트 APP를 개발 중입니다. 저는 Windows 7 64x, FireBird 2.5.1.26351 32x를 사용하고 있습니다.델파이에서 스크립트를 실행하는 중 "잘못된 트랜잭션 핸들 (명시적인 트랜잭션 시작이 예상 됨)"스크립트
실행 순서 :
- 확인 현재 버전 (파이어 버드 데이터베이스에서 select 문) (FTP를 통해)
- 다운로드 업데이트
- 이 (.exe 파일을 적용하고 .SQL을 실행)
.SQL 파일을 실행하려고하면 오류 코드 -901이 튀어 나옵니다. 나는 W7 64x 및 FDB 32x와의 비 호환성 문제가 있음을 알고 있지만 모든 것을 할 수 있습니다 : 백업 및 복원 (gbak), DB 명령 (모두). 나는 대신 FDB 64x를 사용해 보았고 작동하지 않았다.
코드 :
//Components
FDWaitCursor: TFDGUIxWaitCursor;
FDDriverLink: TFDPhysFBDriverLink;
FDConnection:TFDConnection;
FDScript: TFDScript;
function TTHR_Script.CreateComponents:boolean;
begin
try
FDDriverLink := TFDPhysFBDriverLink.Create(FDDriverLink);
FDWaitCursor := TFDGUIxWaitCursor.Create(FDWaitCursor);
FDConnection := TFDConnection.Create(FDConnection);
with FDConnection do
begin
DriverName := 'FB';
Params.UserName := THRBanco.BDUser;
Params.Password := THRBanco.BDPass;
Params.Database := THRBanco.DIROrigem;
end;
FDScript := TFDScript.Create(FDScript);
with FDScript do
begin
Connection := FDConnection;
OnConsolePut := FDScript_ConsolePut;
end;
Result := true;
except on E:Exception do
begin
Result := false;
end;
end;
end;
procedure TTHR_Script.ExecLogs;
var
F : integer;
SR : TSearchRec;
begin
F := FindFirst(ExtractFilePath(Application.ExeName)+'\manager\update\logs\*.sql',faArchive,SR);
FDConnection.Open;
while F = 0 do
begin
with FDScript do
begin
SQLScripts.Clear;
SQLScriptFileName := ExtractFilePath(Application.ExeName)+'\manager\update\logs\'+SR.Name;
ValidateAll;
ExecuteAll;
end;
Application.ProcessMessages;
F := FindNext(SR);
end;
FDConnection.Close;
end;
파이어 버드 2.5.6을 설치 한 후, 여전히 같은 -901 오류가 발생했습니다. 오류 로그 :
update empresa set emp_verbanco='2016.55';
[13_09_2016 | 14:29]: Ok [00:00:00.047].
[13_09_2016 | 14:29]: update empresa set emp_versis='2016.55';
[13_09_2016 | 14:29]: Ok [00:00:00.016].
[13_09_2016 | 14:29]: commit work;
[13_09_2016 | 14:29]: ERROR: Dynamic SQL Error SQL error code = -901 invalid transaction handle (expecting explicit transaction start)
는 파이어 버드 2.5.6 시도 bit old – magicandre1981
오류 코드는 상대적으로 쓸모가 없습니다. 일부 코드는 수십 개의 다른 (그러나 관련) 오류를 포함합니다. 실제 오류 메시지를 게시하거나 갖고 있지 않으면 오류 번호 (오류 코드와 다름)를 게시하십시오. –
또한 실행하려는 SQL 스크립트를 게시하십시오. –