Android Room Database Migration 1

사용 버전: Android Studio 4.0.1

사용 언어: Kotlin 1.4.0



안드로이드 Room Database Migration을 알아보겠습니다.


Migration 이란, Room Database의 버전 변경으로 인한 충돌을 어떻게 대처하며, 기존 데이터베이스의 자료는 어떻게 할 것인가를 설정하는 것을 말합니다.


먼저 Room Database를 사용합니다.


https://shwoghk14.blogspot.com/2020/06/android-room-database-1.html


일반적으로 데이터의 보존이 필요 없다면, 버전을 증가시키고, Migration은 DestructiveMigration을 사용해 줍니다. 그렇게 되면, 기존 테이블은 버려지고 빈 테이블이 만들어집니다.







이번에는 아래의 새로운 테이블이 추가되는 경우를 해보겠습니다.






9 번째 줄에 테이블을 하나 더 추가하고 버전을 증가시켜줍니다.









기존의 테이블을 버려도 된다면, 이대로 실행하면 됩니다.

하지만, 보존이 필요하다면, Migration을 다시 정의해 줘야 합니다.



CREATE TABLE에 새로 만들 테이블 이름을 적어줍니다.

그리고, 위의 변수를 따라서, 타입을 맞춰서 해줍니다.

NOT NULL은 null이 들어가지 않는다는 뜻이고, DEFAULT는 생성될 때의 기본 값을 나타냅니다.

settingKeyboard의 경우 Boolean이지만, SQLite의 경우 Boolean 타입이 없습니다. 그래서 INTEGER 형태로 저장됩니다. 0은 false, 1은 true를 나타냅니다.

마지막으로 PRIMARY KEY를 지정해 줍니다.





41 번째 줄을 다음과 같이 addMigrations로 변경해 줍니다.







그리고 실행합니다.


기존에 있던 데이터의 손실 없이 버전 증가가 되었습니다.




Android Room Database Migration 2에서는 기존 테이블에 새로운 Column 추가를 알아보겠습니다.


끝.




카테고리: Android

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

Python OpenCV 빈 화면 만들기

tensorflow tf.random.uniform()

Android Notification with Full Screen

KiCad 시작하기 2 (PCB 만들기)

Android Minimum touch target size

Python bs4.SoupStrainer()

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

음악 총보(Score), 파트보(Part)

tensorflow tf.expand_dims()