2017-12-05 5 views
1

에 있습니다. Perl 프로그래밍 데이터베이스 연결을 위해 DBI 모듈과 함께 MySQL을 사용합니다. 내 코드에서Perl 디버거 : DBD :: mysql :: db do failed : MySQL 서버가

Issuing rollback() due to DESTROY without explicit disconnect() of  
DBD::mysql::db handle db=db;ip=X.X.X.X; at /code/save2db.plx line 104. 
DBD::mysql::db DESTROY failed: MySQL server has gone away at 
/code/save2db.plx line 104. 
    (in cleanup) DBD::mysql::db DESTROY failed: MySQL server has gone away 
at /code/save2db.plx line 104. 

라인 (104)

103 $dbh->disconnect; 
104 exit; 

이런 일이 발생하는 이유 어떤 생각입니다 : MySQL을 사용하는 경우 나는 아래와 같은 오류 메시지가 있어요? 의견을 보내 주시면 감사하겠습니다.

답변

1

disconnect 메서드의 트랜잭션 동작은 슬프게도 입니다. 일부 데이터베이스 시스템 (예 : Oracle 및 Ingres)은 이 미결 수정 사항을 자동으로 커밋하지만 나머지는 (예 : Informix) 미해결 변경 사항을 롤백합니다. 응용 프로그램이 이 아닌 경우 AutoCommit을 사용하면 또는 rollback을 명시 적으로 호출하고 호출 연결을 끊어야합니다.

+0

https://metacpan.org/pod/DBI#disconnect를 참조하지만 내 스크립트에서, 나는 "$ dbh-> errstr을"("COMMIT") 또는 죽는 $ dbh->을 추가했다; 연결을 끊기 전에 – georgetovrea

+0

당신은'begin_work','commit' 및'rollback' 메소드를 원시 SQL로 처리하는 대신 트랜잭션 관리를 시도 할 수 있습니까? –

+0

http://www.perlmonks.org/?node_id=317168도 참조하십시오. –

관련 문제