안드로이드 플랫폼에서 사용하는 DB 는 sqlite 이다. 파일 DB 로서는 꽤 많이 사용되고 있다.
일단 sqlite 는 파일 DB 라서 사용하기 편하다. 그냥 DB 파일을 이래저래 옮기기도 편하고,
SQL 을 그대로 사용할 수 있으니 말이다. 안드로이드에서도 sqlite 를 사용하고 있는데, 처음 사용하는
분들이 아래와 같은 에러를 겪는 경우가 있다.
# sqlite mmssms.db
Unable to open database "mmssms.db": file is encrypted or is not a database
이 경우는 sqlite 버전이 구 버전이 아닌지 확인해 보아야 한다.
# sqlite -version
2.8.17
안드로이드에서 사용하는 SQLite 의 버전은 3 이기 때문이다. 파일의 앞 부분을 살펴보면 확인이 가능하다.
# hexdump -C mmssms.db | more
00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.|
00000010 04 00 01 01 00 40 20 20 00 00 0b a3 00 00 00 00 |.....@ ........|
00000020 00 00 00 00 00 00 00 00 00 00 00 39 00 00 00 01 |...........9....|
00000030 00 00 00 00 00 00 00 12 00 00 00 01 00 00 00 2f |.............../|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
그래서 아래와 같이 3.X 버전으로 실행하면 문제없이 DB 접근이 가능해 진다.
# sqlite3 mmssms.db
SQLite version 3.5.9
Enter ".help" for instructions
또는 파일 명령어를 통해서 3 버전인걸 확인이 가능하다.
# file mmssms.db
mmssms.db: SQLite 3.x database, user version 47
흔히 위와 같이 에러를 겪는 경우, 그냥 별 생각없이 sqlite 로 치고 접근하면서 많이 발생한다. 3 버전이므로
sqlite3 로 접근하거나, sqlite 를 sqlite3 로 심볼릭링크를 걸어 사용하기 바란다.
댓글 없음:
댓글 쓰기