2011-11-28 1 views
0

Perl 프로그램을 통해 액세스하는 SQLite DB에이 문제가 있습니다. INSERT 및 DELETE 명령을 사용할 수 있지만 VACUUM은 오류를 발생시키지 않습니다 : "디스크 I/O 오류".SQLite VACUUM 디스크 I/O 오류

루트 권한으로 프로그램을 실행해도 아무런 문제가 없으므로 일부 사용 권한 문제 여야합니다. 나는 그 과정에 참여한 모든 파일에 대한 허가를 확인 했으므로 괜찮을 것이다. 나는 정말로 이해하지 못한다. VACUUM 명령이 DB 디렉토리 외부에서 I/O 작업을 수행합니까?

고맙습니다. 감사합니다, 당신은 내가보고 싶은 경우

my $dbh = DBI->connect("dbi:SQLite:someDB.db", undef, undef, {RaiseError => 1, AutoCommit => 1}); 
my $sth = $dbh->prepare("VACUUM;"); 
$sth->execute; 

답변

2

/VACUUM 동안 실행되는 O 작업이 당신이 strace를 사용할 수 있습니다. 디스크 IO를 포함하여 SQLite가 실행하는 모든 시스템 호출을 나열합니다.

strace sqlite3 someDB.db 'VACUUM;' 
+0

고맙습니다. 내 하드 디스크가 꽉 찼다는 것을 알았어. – Pierre

관련 문제