У меня есть простой объект:Как обновить базу данных с помощью Sugar Orm?
public class MyEntity extends SugarRecord {
String name;
int value;
public MyEntity() {
//empty ctr for sugar orm
}
public MyEntity(String name, int value) {
this.name = name;
this.value = value;
}
}
В App начала я сделать экземпляр и сохранить его как это:
Log.i("db_test", "count_before: "+MyEntity.count(MyEntity.class)+"");
new MyEntity("name", 10).save();
Log.i("db_test", "count_after: "+MyEntity.count(MyEntity.class)+"");
В журнале я вижу:
04-12 14:58:52.538: I/db_test(10691): count_before: 0
04-12 14:58:52.555: I/Sugar(10691): MyEntity saved : 1
04-12 14:58:52.555: I/db_test(10691): count_after: 1
Это работает хорошо.
Так что, если я решил, что хотел бы добавить свойство в класс MyEntity. вот так:
public class MyEntity extends SugarRecord {
String name;
int value;
int anotherValue; ///< A new property.
//...
После этого я увеличиваю версию Databse, потому что модель изменилась. Так я увеличиваю следующее поле в манифесте от 1 до 2.
<meta-data
android:name="VERSION"
android:value="2"/>
На этот раз, когда я побежал мое приложение, я получил следующее сообщение об ошибке:
E/SQLiteLog(11125): (1) table MY_ENTITY has no column named ANOTHER_VALUE
java.lang.RuntimeException: Unable to start activity ComponentInfo{...}:
android.database.sqlite.SQLiteException: table MY_ENTITY has no column named ANOTHER_VALUE (code 1): , while compiling: INSERT OR REPLACE INTO MY_ENTITY(ANOTHER_VALUE,ID,VALUE,NAME) VALUES (?,?,?,?)
Так почему же это происходит?
Я создал это свойство на своем объекте Java.
Я увеличил версию базы данных.
Что я делаю неправильно?