개발/Android

[안드로이드] SQLite No such table (code 1 SQLITE_ERROR)

6Developer 2020. 4. 7. 01:29

새벽 1시 20분인데

별것도 아닌 얘 때문에 잠을 못자고 있었는데 드디어 잘 수 있게 되었으나 같은 검색, 같은 삽질을 또 하지 않기위해 기록 후 잠들고자 글을 쓴다

 

1. 로그캣에 아래와 같은 에러가 나타나면서 앱이 비정상 종료 되었다

 - Caused by: android.database.sqlite.SQLiteException: no such table: XXX (code 1 SQLITE_ERROR): , while compiling: SELECT XXX FROM XXX;

 - Assets 폴더에 미리 만들어놓은 SQLite 파일을 넣어두고 /data/data/[Package Name]/databases/.. 경로로 복사해서 읽으려하는데 발생한 오류다

 - Android Studio의 View -> Tool Windows -> Device File Explorer를 통해 복사된 SQLite를 확인해보면 정상적으로 테이블이 존재한다

 

2. 언제나 해결하고나면 너무 간단해서 불편하다

 - 얼마나 많은 구글링을 했는데 답을 발견하지 못하다가 기나긴 삽질 끝에 찾아냈다

 - Android P 부터는 WAL을 사용하도록 설정되는것이 기본이다 (Write Ahead Logging)

 - https://www.sqlite.org/wal.html

 - WAL을 해제하자 : SQLiteOpenHelper를 상속받는 클래스로가서 아래와 작성한다

    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.disableWriteAheadLogging();
    }

 - Android Studio의 View -> Tool Windows -> Device File Explorer에서 /data/data/[Package Name]/databases/ 아래 wal로 끝나는 파일을 삭제한다

 - 정상적으로 작동한다