새벽 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로 끝나는 파일을 삭제한다

 - 정상적으로 작동한다

 

  • 야롱이 2020.04.07 13:17  댓글주소  수정/삭제  댓글쓰기

    안녕하세요! 실례가 안된다면 만드신 앱관련해서 이야기좀 나누고 싶은데 혹시 괜찮으시다면 카톡 id : 118rudwp 로 카톡주시면 감사하겠습니다! 운전면허 관련 앱입니다!