2012-12-10 5 views
4

새 sqlite 데이터베이스를 만드는 데 문제가 있습니다. 주로 작동하지만 일부 응용 프로그램을 설치 한 후 Samsung Galaxy S III를 사용하는 일부 고객이 충돌을보고합니다. 문제는 sqlite가 write() 메서드를 호출 할 때 발생하며 고객이 exFAT로 형식화 된 외부 SD 카드를 가지고있을 때만 발생합니다 (삼성이 일부 휴대 전화에서 지원함). 이상한 점은 폴더 생성 작업이 빈 데이터베이스 파일을 만드는 것입니다. 그러면 작동이 중단됩니다. 완벽하게 작동하는 exfat를 가진 custom rom에 재고 Samsung ROM에서만 발생합니다. 이 문제를 해결하는 방법? 우리가 임시 파일은 기본적 대신 SD 카드 (SQLITE_TEMP_STORE = 2 컴파일 매개 변수)에 의해 메모리에 저장되는 설정 보인다 - 은exFAT 파일 시스템을 사용하는 Android sqlite 크래시

우리는 마침내 SGS III에이 문제를 해결
[21:10:36.225] W [22233][Sqlite]: (0) OPENX 59 /storage/extSdCard/Be-on-road/packages 0400102 
[21:10:36.225] W [22233][Sqlite]: (0) OPEN 59 /storage/extSdCard/Be-on-road/packages 
[21:10:36.225] W [22233][Sqlite]: (0) READ 59  0  0 0 
[21:10:36.225] I [22233][Sqlite]: Database successfully opened /storage/extSdCard/Be-on-road/packages. 
[21:10:36.238] W [22233][Sqlite]: (0) LOCK 59 SHARED was NONE(NONE,0) pid=22233 (unix) 
[21:10:36.238] W [22233][Sqlite]: (0) LOCK 59 SHARED ok (unix) 
[21:10:36.238] W [22233][Sqlite]: (0) UNLOCK 59 0 was 1(1,1) pid=22233 (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 SHARED was NONE(NONE,0) pid=22233 (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 SHARED ok (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) UNLOCK 59 0 was 1(1,1) pid=22233 (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 SHARED was NONE(NONE,0) pid=22233 (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 SHARED ok (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 RESERVED was SHARED(SHARED,1) pid=22233 (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) LOCK 59 RESERVED ok (unix) 
[21:10:36.239] W [22233][Sqlite]: (0) OPENX 60 /storage/extSdCard/Be-on-road/packages-journal 0400102 
[21:10:36.239] W [22233][Sqlite]: (0) OPENDIR 61 /storage/extSdCard/Be-on-road 
[21:10:36.239] W [22233][Sqlite]: (0) OPEN 60 /storage/extSdCard/Be-on-road/packages-journal 
[21:10:36.240] W [22233][Sqlite]: (0) WRITE 60 512  0 0 
[21:10:36.242] W [22233][Sqlite]: (0) LOCK 59 EXCLUSIVE was RESERVED(RESERVED,1) pid=22233 (unix) 
[21:10:36.242] W [22233][Sqlite]: (0) LOCK 59 EXCLUSIVE ok (unix) 
[21:10:36.242] W [22233][Sqlite]: (0) READ 60  0  512 0 
[21:10:36.242] W [22233][Sqlite]: (0) SYNC 60 
[21:10:36.246] W [22233][Sqlite]: (0) DIRSYNC 61 (have_fullfsync=0 fullsync=0) 
[21:10:36.246] W [22233][Sqlite]: (0) WRITE 60  12  0 0 
[21:10:36.246] W [22233][Sqlite]: (0) SYNC 60 
[21:10:36.249] W [22233][Sqlite]: (0) WRITE 59 1024  0 0 
[21:10:36.249] W [22233][Sqlite]: (0) WRITE 59 1024 1024 0 
[21:10:36.249] W [22233][Sqlite]: (0) WRITE 59 1024 2048 0 
............ lots of write 
[21:10:36.250] W [22233][Sqlite]: (0) WRITE 59 1024 10240 0 
[21:10:36.250] W [22233][Sqlite]: (0) SYNC 59 
[21:10:36.263] W [22233][Sqlite]: (0) CLOSE -1 
[21:10:36.264] W [22233][Sqlite]: (0) UNLOCK 59 1 was 4(4,1) pid=22233 (unix) 
[21:10:36.264] W [22233][Sqlite]: (0) UNLOCK 59 0 was 1(1,1) pid=22233 (unix) 
[21:10:36.264] W [22233][Sqlite]: (0) LOCK 59 SHARED was NONE(NONE,0) pid=22233 (unix) 
[21:10:36.264] W [22233][Sqlite]: (0) LOCK 59 SHARED ok (unix) 
[21:10:36.264] W [22233][Sqlite]: (0) READ 59  16  24 0 
[21:10:36.264] W [22233][Sqlite]: (0) LOCK 59 RESERVED was SHARED(SHARED,1) pid=22233 (unix) 
[21:10:36.264] W [22233][Sqlite]: (0) LOCK 59 RESERVED ok (unix) 
[21:10:36.265] W [22233][Sqlite]: (0) OPENX 60 /storage/extSdCard/Be-on-road/packages-journal 0400102 
[21:10:36.265] W [22233][Sqlite]: (0) OPENDIR 61 /storage/extSdCard/Be-on-road 
[21:10:36.265] W [22233][Sqlite]: (0) OPEN 60 /storage/extSdCard/Be-on-road/packages-journal 
[21:10:36.266] W [22233][Sqlite]: (0) WRITE 60 512  0 0 
[21:10:36.266] W [22233][Sqlite]: (0) WRITE 60  4  512 0 
[21:10:36.266] W [22233][Sqlite]: (0) WRITE 60 1024  516 0 
............ lots of write 
[21:10:36.269] W [22233][Sqlite]: (0) WRITE 60 1024 3612 0 
[21:10:36.269] W [22233][Sqlite]: (0) WRITE 60  4 4636 0 
[21:10:36.272] W [22233][Sqlite]: (0) OPENX 62 /storage/extSdCard/Be-on-road/etilqs_nX2uuug04YJMBLG 0500302 
[21:10:36.273] W [22233][Sqlite]: (0) OPEN 62 
[21:10:36.273] W [22233][Sqlite]: (778) os_unix.c:27158: (5) write() - 
[21:10:36.273] W [22233][Sqlite]: (0) WRITE 62  -1  0 0 
[21:10:36.273] W [22233][Sqlite]: (778) statement aborts at 22: [UPDATE app_info SET db_version=:NEW_VERSION] 
[21:10:36.273] W [22233][Sqlite]: (0) READ 60  4 4624 0 
[21:10:36.275] W [22233][Sqlite]: (0) READ 60  4 1540 0 
............ lots of read 
[21:10:36.276] W [22233][Sqlite]: (0) READ 60  4 4636 0 
[21:10:36.276] W [22233][Sqlite]: (0) READ 60  4 4624 0 
[21:10:36.276] W [22233][Sqlite]: (0) CLOSE -1 
[21:10:36.276] W [22233][Sqlite]: (0) CLOSE -1 
[21:10:36.277] W [22233][Sqlite]: (0) UNLOCK 59 1 was 2(2,1) pid=22233 (unix) 
[21:10:36.278] W [22233][Sqlite]: (0) UNLOCK 59 0 was 1(1,1) pid=22233 (unix) 
[21:10:36.281] E [22233][Sqlite]: Step failed: disk I/O error, code: 778. Expecting SQLITE_DONE. 
[21:10:36.281] E [22233][PackageDb]: Sqlite error: disk I/O error on query UPDATE app_info SET db_version=:NEW_VERSION 
[21:10:36.282] E [22233][UpdaterService]: Failed to initialize package database on service start. 
+0

실제 오류 코드가 기록되지 않았습니다. C API에 접근 할 수 있다면'sqlite3_file_control (db, "main", SQLITE_LAST_ERRNO, & errno_value);'를 사용하거나 SQLite 코드 내부에서'errno' 나'pFile-> lastErrno'를 로그하면됩니다. –

답변

1

, 꽤 해결 방법입니다 주셔서 감사합니다 일하다.

관련 문제