Android Jetpack

Room 의 다양한 테크닉들 - 2 (fallbackToDestructiveMigration)

----___<<<<< 2023. 2. 4. 16:28

https://philosopher-chan.tistory.com/1619

 

Room 의 다양한 테크닉들 - 1 (Simple Ex)

id 'kotlin-kapt' // ROOM def roomVersion = "2.5.0" implementation("androidx.room:room-runtime:$roomVersion") annotationProcessor("androidx.room:room-compiler:$roomVersion") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compile

philosopher-chan.tistory.com

 

위에서 간단하게 만들어본 앱을 이용해서 Table과 Column 을 추가하면 어떻게 되는지 한번 해보겠습니다.

 

TextEntity2와 TextDao2 를 만들고 TextDatabase에서 만든 것들을 추가해서 한번 시도해보겠습니다.

 

아래와 같이 코드를 추가/변경해줬습니다.

 

 

위와 같이 데이터 스키마를 변경하고 나면

 

 java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number

 

와 같은 에러가 나옵니다.

 

위의 설명처럼 fallbackToDestructiveMigration을 이용해서 기존 데이터를 삭제해주고 스키마를 변경해줄 수 있습니다.

 

 

https://developer.android.com/training/data-storage/room/migrating-db-versions?hl=ko

 

다만 이렇게 할 경우, 데이터가 날라가는 문제가 발생합니다.

 

기존 데이터를 유지하는 마이그레이션에 대해서 알아보겠습니다.