迁移错误加载Realm数据库

时间:2016-07-21 13:37:13

标签: java android realm

我正在尝试从 / res / raw 文件夹加载域数据库文件,但是我收到错误。

io.realm.exceptions.RealmMigrationNeededException: RealmMigration must be provided

使用以下代码:

private void loadRealmDB() {

        RealmConfiguration configuration = new RealmConfiguration
                .Builder(getApplicationContext())
                .name(REALM_DATABASE_NAME)
                .schemaVersion(0)
                .build();
        Realm.deleteRealm(configuration);
        Realm.getInstance(configuration).close();

        loadRealmFromRawFile(this.getResources().openRawResource(R.raw.default0), REALM_DATABASE_NAME);

//         You can then manually call Realm.migrateRealm().
        try {
            Realm.migrateRealm(configuration, new RealmMigration() {

                @Override
                public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
                    oldVersion++;
                }
            });
        } catch (FileNotFoundException ignored) {
//            If the Realm file doesn't exist, just ignore.
            Log.wtf(TAG, "Error migration");
        }

        Realm realm = Realm.getInstance(configuration);

        Log.wtf(TAG, "->>PData size: " + realm.where(PData.class).findAll().size());
        Log.wtf(TAG, "->>SData size: " + realm.where(SData.class).findAll().size());
    }



    public void loadRealmFromRawFile(InputStream inputStream, String fileName) {
        long startTime,endTime,resultTime;

        //start time
        startTime = System.currentTimeMillis();

        try {
            File file = new File(getApplicationContext().getFilesDir(), fileName);
            FileOutputStream outputStream = new FileOutputStream(file);
            byte[] buf = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buf)) > 0) {
                outputStream.write(buf, 0, bytesRead);
            }
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //end time
        endTime = System.currentTimeMillis();
        resultTime = endTime - startTime;
        Log.wtf(TAG, "Bundling realm from R.res.raw: " + resultTime);
    }

在其他测试项目中,此代码有效!可能是什么问题?

如果我不需要,我如何跳过迁移?

0 个答案:

没有答案
相关问题