2009-06-26 4 views
5

명백한 AutoCommit을 사용하지 않더라도 SQLite 오류가 발생합니다. 누구든지이 오류에 대한 입력을 제공 할 수 있습니다. 이 오류가 발생하는 상황은 무엇입니까?SQLite 오류 : 트랜잭션을 커밋 할 수 없습니다 - Java 코드를 사용하여 진행중인 SQL 문

미리 감사드립니다. 감사합니다, Manasi 저장

+0

코드 조각을 게시 할 수 있습니까? –

+0

그리고 실행중인 SQLite 버전은 무엇입니까? –

+0

SQLite 버전 3을 사용하고 있습니다. –

답변

5

나는 루프 내에서 테이블 항목을 반복 할 때 반복적으로 (내 경우에는 롤백이 불가능했습니다) 직면했습니다. 커서가 항목을 처리하는 동안 SQL 문은 "진행 중"입니다. 나는 이것이 정확하게 커밋을 금지하더라도 정확하게 알지 못한다.

테이블 항목을 처리하고 동일한 테이블이나 다른 테이블에 항목을 삽입하려고하면 메모리에서 데이터를 수집하고 루프가 삽입 또는 업데이트를 수행하려고 할 수 있습니다.

Addtitional info : "Autocommit"은 SQLite에서 기본적으로 "True"로 기본 설정되어 있습니다 (사용하는 액세스 레이어에 따라 달라질 수도 있습니다. 파이썬과 apsw를 사용하기 때문에 이에 대해 더 설명 할 수 없습니다) 자바에서). 이것은 모든 인서트가 자동으로 즉시 커밋됨을 의미합니다.

==> 다른 해결책이 될 수 있습니다. 데이터를 메모리에 저장하는 대신 트랜잭션을 명시 적으로 열어 루프 후에 커밋 할 수 있습니다. 이렇게하면 문제가 해결됩니다.