Я использую realmjs
БД в своем приложении, где у меня есть схема settings
. Я хочу изменить тип свойства этой схемы с int
на string
. Итак, я понимаю, что мне нужно выполнить миграцию, и я решил выполнить linear
миграцию. Для миграции я следовал примеру из документации Realm и в итоге сделал что-то вроде ниже:
const schemaList = [schemaV1,schemaV2];
let nextSchemaIndex = Realm.schemaVersion(Realm.defaultPath);
while (nextSchemaIndex < schemaList.length) {
const migratedRealm = new Realm(schemaList[nextSchemaIndex++]);
migratedRealm.close();
}
export default new Realm(schemaList[schemaList.length - 1]);
schemaV1
- это старая версия БД, а schemaV2
- самая последняя версия БД после изменения типа свойства. schemaV2
также имеет функцию миграции, как показано ниже:
if (oldRealm.schemaVersion < 1) {
const oldObjects = oldRealm.objects(TBL_MOBILE_SETTING);
const newObjects = newRealm.objects(TBL_MOBILE_SETTING);
for (let i = 0; i < oldObjects.length; i++) {
newObjects[i].module = oldObjects[i].module;
newObjects[i].setting = oldObjects[i].setting;
}
}
Но в конце, когда я пытаюсь запустить приложение, оно вылетает с сообщением об ошибке,
Необходим перенос базы данных
Означает ли это, что функция миграции в schemaV2
никогда не запускается? Если да, то как убедиться, что все функции миграции работают правильно? Или я что-то упускаю?
EDIT
Я обнаружил, что изменение типа столбца в RealmJS недопустимо, и добавил новый столбец и попытался выполнить миграцию, но ошибка все та же.