인프런 커뮤니티 질문&답변

[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)

로컬 데이터베이스 세팅 (Room)

[룸DB 관련 에러] can't open offline database '/data/data/ ...

작성

·

62

·

수정됨

0

 에러재현

  1. Intro를 통해서 DB를 최초 저장하는 것은 성공

  2. 앱을 재빌드 또는 재실행하면 App Inspection 의 coin_database (closed) 라고 나오는 현상 있음

  3. Database Inspector 관련 에러창도 뜹니다.

 

시도해본 에러 처리

  1. 시뮬레이터 디바이스 변경

  2. 시뮬레이터 디바이스 wipe data 

  3. 실기기에서 [에러재현]과 동일한 방식의 빌드테스트

  4. App Inspector의 [Keep Data Connections Open] 활성화

[프로젝트파일 구글드라이브 링크]

https://drive.google.com/file/d/1a7nJ6Zik7Plpx2UEs7nBKDemQ40qZvpJ/view?usp=sharing

 

왠만하면 검색하여 해결해보려했는데 도저히 이유를 모르겠네요.. 혹시 어떤 문제인지 알고 계신가요?

 

20241008_110740.png

 

20241008_110832.png

 

 

 

답변 3

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요

동일한 코드를 실행했는데 잘 동작하는것을 확인했습니다.

이게 종종 안드로이드 스튜디오 버전에 따라 안나오는 경우가 있는데

최신 안드로이드 스튜디오를 다운받아서 해보시겠어요?

스크린샷 2024-10-09 오후 4.10.17.png

 

0

[1,2,3,4] 에 대한 대안은 적절한 대안은 아닌 것 같습니다. 저 말이 성립하려면 최초에 데이터베이스의 쓰기기능도 구동되지 않았어야 합니다.

[5]에 대해선 두번째 실행 시, MainActivity에서 DB에 아무 접근하지도 않았는데 레이스컨디션이 났고 그것에 의해 DB가 Closed 되었다? 그건 아닌 것 같아요

0

안녕하세요, 인프런 AI 인턴입니다. 한국가상현실코비온라인님, Room DB 사용 중 발생하는 에러에 대해 설명해 드리겠습니다.

앱을 재빌드하거나 재실행할 때 Room 데이터베이스가 닫혀서 Can't open offline database 오류가 발생하는 문제는 여러 가지 원인에서 발생할 수 있습니다. 아래는 그 중 몇 가지 가능한 원인과 해결 방법입니다.

  1. 데이터베이스 연결 설정 문제: 데이터베이스 초기화가 앱의 Application 클래스에서 제대로 이루어지지 않는 경우가 있습니다. 이 점을 확인하시고, Room.databaseBuilder를 통해 데이터베이스 빌더가 올바르게 사용되고 있는지 확인해 보세요.

  2. 올바른 디바이스 선택: 에러 메시지에서 “Device ‘galaxy21_APL_33 emulator-5554’ not found”라는 문구가 있는 것으로 보아, 가상 디바이스와의 연결이 끊어진 것일 수 있습니다. Android Virtual Device (AVD) 설정에서 에뮬레이터가 올바르게 실행되고 있는지, 그리고 ‘Use same device for future launches’ 설정이 활성화되어 있는지 확인하세요.

  3. 디바이스의 저장 공간 문제: 특정 시나리오에서 디바이스의 저장 공간이 부족한 경우에도 데이터베이스가 제대로 작동하지 않을 수 있습니다. 이 경우 에뮬레이터 설정에서 디스크 공간 및 메모리 설정을 확인해 보세요.

  4. 파일 권한 문제: 에뮬레이터의 파일 시스템에서 데이터베이스 파일에 접근할 권한이 없을 수도 있습니다. 퍼미션 관련 설정을 다시 확인하여 데이터베이스 파일에 대한 접근이 제대로 설정되어 있는지 확인해 주세요.

  5. 레이스 컨디션 문제: 데이터베이스 접근과 관련한 코드에서 다른 쓰레드와의 문제로 인해 레이스 컨디션이 발생할 수 있습니다. 데이터베이스 초기화 및 접근에 관한 모든 코드가 메인 쓰레드에서 문제가 없게 실행되도록 되어 있는지 확인하세요.

현재 문제가 생긴 구체적인 상황을 더 잘 이해하기 위해, 프로젝트 코드 전반을 함께 공유해주시면 인지할 수 있는 데이터베이스 설정 혹은 환경 설정의 문제점을 파악하는 데에 더 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.