사용자가 앱 SQLite 데이터베이스 파일을 SD 카드에 저장할 수있는 앱이 있습니다. 이 함수는 1 년 넘게 사용되어 잘 작동했습니다. 내가 재현 할 수없는 오류가있는 경우 사용자가 데이터베이스 파일을 전자 메일로 보내도록했습니다.Android 데이터베이스 파일 손상
최근에 사용자가 데이터베이스 파일을 보내고이를 내 앱에로드하려고 시도했을 때 (앱의 데이터베이스 파일 위치에 배치) 데이터베이스 파일을 열려고 할 때 앱이 다운되었습니다. 이 사용자는 이전에 문제없이 파일을 보냈습니다.
내 앱의 유일한 차이점은 다음과 같습니다. 1) app-2-SD 기능을 추가했습니다. 2) 이제 내 앱 타겟 2.2가 1.6이었던 반면 1.6이었습니다.하지만 두 경우 모두 1.5는 최소 SDK 버전입니다.).
사용자가 SD 카드에 앱을 놓은 다음 앱이 다운되기 시작했다고합니다. 오류 보고서를 제출할 수있는 옵션도 제공하지 않습니다. 내가 에뮬레이터에서 자신의 파일을 배치
, 나는 다음과 같은 스택 추적을 가지고 : 그는 전에 나에게 데이터를 이메일, 그리고 파일이 올바른 데이터베이스 이름과 확장자를 가지고 있었다, 그래서 나는주는거야
11-09 22:32:04.275: ERROR/AndroidRuntime(757): Caused by: android.database.sqlite.SQLiteException: file is encrypted or is not a database
11-09 22:32:04.275: ERROR/AndroidRuntime(757): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
11-09 22:32:04.275: ERROR/AndroidRuntime(757): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1636)
11-09 22:32:04.275: ERROR/AndroidRuntime(757): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1586)
11-09 22:32:04.275: ERROR/AndroidRuntime(757): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:638)
11-09 22:32:04.275: ERROR/AndroidRuntime(757): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168)
그에게 의심의 여지가 있고 잘못된 파일을 보낸 것으로 가정하지 마십시오. 누구든지이 문제를 전에 보았으며 가능한 원인이나 해결책을 알고 있습니까?
업데이트 어떤 차이가있는 경우 사용자로부터 휴대 전화가 HTC Evo 4G임을 알게되었습니다. 나는 최근의 안드로이드 릴리스에서 암호화 된 데이터베이스 파일에 대해 어딘가 읽었을 것으로 생각했다. 데이터베이스 파일은/data/data /보다/data/secure/아래에 저장된다 ... 이것이 관련 될 수 있는지 궁금하다. 어쨌든, 사용자에게 더 심문 한 후에, 적어도 그것이 문제가있는 데이터베이스 파일의 하나의 특정 테이블이라는 것을 알고 있습니다. 내 애플 리케이션의 다른 부분은 데이터베이스 파일 내의 다른 테이블과 상호 작용합니다. 응용 프로그램이 잘 작동하고 다른 테이블에 액세스 할 때 데이터를 저장/읽을 수 있지만 특정 테이블 하나에 액세스 할 때 파일을 열려고하면 오류가 발생합니다. 나는 그것이 발생하면이 예외를 잡는 추악한 수정을 추가 할 수 있다고 생각하고 손상된 테이블을 삭제 한 다음 다시 작성하십시오. 생각?
좋아, SQLite 도구를 사용하여이 파일을 검사 할 수 있습니까? SQLite 도구에서이 데이터베이스 파일을 열어보십시오. 올바른 데이터가 표시되는지 확인하십시오. – user370305
그게 제가 처음 시도한 것입니다. SQLite에서 파일을 열었을 때 아무 것도 없었습니다. 그것은 내 테이블을 보여주지 못했습니다.파일이 0 바이트가 아니더라도 파일에 아무것도 없습니다. – Michael
@Michael 나는 또한 이런 문제를 겪었다. 해결책을 찾았습니까? 내 질문은 http://stackoverflow.com/questions/10210503/database-disk-image-is-malformed-or-file-is-encrypted-or-is-not-a-database입니다. – Judy