코린이 탈출기

[에러 해결] net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master; 본문

안드로이드/에러

[에러 해결] net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;

50HEE 2023. 8. 9. 20:45

net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;

 

 

위와 같은 에러가 발생하는 이유는 데이터베이스를 변경했을 때 마이그레이션을 하지 않아서 생기는 문제입니다.

 

제가 발생한 경로를 설명해 드리겠습니다.

저는 기존의 앱에 Room을 새롭게  추가하는 작업을 진행 중이었습니다.

Room에 관한 코드를 작성 후 테스트 시에는 문제가 없었습니다. 그 후 Room에 암호화를 추가하였습니다.

그리고 암호화가 잘 되었는지 테스트를 위해 암호화한 부분을 지웠다가(이때가지는 에러 발생하지 않음) 다시 추가하니 위와 같은 에러가 발생하였습니다.

 

알고 보니 데이터베이스의 경우 변경 사항이 생길 때마다 마이그레이션을 적용해주어야 한다고 하더라고요!

저의 경우에는 기존에 Room이 없는 상태에서 추가할 예정이라 굳이 마이그레이션 코드를 추가할 필요는 없다고 생각하였습니다. 그래서 이런 경우에는 해당 앱의 저장공간에 있는 데이터를 날려주면 해당 에러가 해결됩니다!!

 

데이터 삭제 방법은 잘 아시겠지만...

해당 앱의 저장공간으로 이동하여 노란색으로 표시된 '데이터 삭제'를 누르시면 됩니다!!!

 

 

 

 

 

 

 

 

 

 

우선 간단하게 해결하는 방법을 보셨습니다!

다음에 마이그레이션을 하는 방법을 알아보겠습니다!!

 

 

 

그리고... 매번 느끼지만 에러는 참... 같은 에러지만 해결 방법이 다 달라서 코딩... 어렵네요... ><

 

<참고 사이트>

https://github.com/sqlcipher/android-database-sqlcipher/issues/520

Comments