티스토리 뷰

반응형

SQLiteOpenHelper 를 사용하여 내부 Database를 잘 사용하고 있다가 어느 순간 다음과 같은 에러가 떴다.

 

java.lang.RuntimeException: Unable to start activity ComponentInfo{...}
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
   (no such table: SCMODE (code 1): , while compiling: SELECT * FROM SCMODE;)
#################################################################

 

당황스러웠다. SQLiteOpenHelper를 implement한 DBHelper Class는 건들이지도 않았는데

갑자기 테이블 하나가 사라졌다는 것이다.

 

DBHelper의 onCreate에는 여전히 테이블을 생성하는 코드 (CREATE TABLE)가 그대로 있었고,

오타를 몇번이나 확인해도 도무지 왜 그런지 이해가 안갔다.

 

Invalidate Caches / Restart 를 해봐도,

Clean Project -> Rebuild Project 를 해봐도,

도무지 해결되지 않았고

 

SQLiteManager로 테이블을 확인해도, 없어진 해당 테이블만 제외하고 모두 그대로 있었다.

그리고 여전히 다시 테이블은 생성되지 않았다... 정말 미스테리하다.

 

 

SOLUTION

어플리케이션을 지우고 다시 run 하는 것 만으로는 기기에 저장된 .db파일이 지워졌다가 다시 깔리지 않는다.

이전에 생성해놓은 db파일이 있는 경우이므로 똑같은 에러가 계속 반복되는 것이었다.

결국 device의 .db파일을 찾아내서 직접 지워버리는 방법으로 문제를 해결했다.

 

Device File Explorer에 들어가서 

 

data / data / 해당 패키지 이름 / databases /

에 들어가면 자신이 만들어 놓은 db파일 이름이 있다.

이름.db    이름.db-journal

두 파일 모두 지워버리고 rebuild 했더니 문제가 해결되었다.

 

추후에 이런 문제가 없기 위해서는 테이블이 없는 경우 다시 생성하는 예외코드를 작성해야 할 것이다.

 

 

 

 

 

출처

https://peter.grman.at/android-sqlite-exception-no-such-table/

https://www.androidpub.com/21768

https://www.androidpub.com/1857937

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함