1

DBFlow ( SQLite.select().from(Schedule.class).where(Schedule_Table.id.eq(scheduleId)).querySingle()) を使用してモデルを選択すると、次のエラーが表示されます。

データベース ファイルを開くことができません (コード 2062)

#################################################### ######### エラー コード: 2062 (SQLITE_CANTOPEN_EMFILE) 原因: アプリケーションが

2 つの多くのファイルを開きました。1 つのプロセスで使用できるファイル記述子の最大数は、デフォルトで 1024 です。(データベース ファイルを開けません (コード 2062))

#

それは私が間違っていることですか、それとも DBFlow ライブラリのバグですか? クラッシュする DBFlow のコードは次のとおりです。

@SuppressWarnings("unchecked")
@Nullable
public TModel convertToData(@NonNull final FlowCursor cursor, @Nullable TModel data,
                            boolean moveToFirst) {
    if (!moveToFirst || cursor.moveToFirst()) {
        if (data == null) {
            data = getInstanceAdapter().newInstance();
        }
        getInstanceAdapter().loadFromCursor(cursor, data);
    }
    return data;
}

この関数は次の関数によって実行されます。ここでは、カーソルが閉じられていることがわかります。

@Nullable
public TReturn load(@Nullable FlowCursor cursor, @Nullable TReturn data) {
    if (cursor != null) {
        try {
            data = convertToData(cursor, data);
        } finally {
            cursor.close();
        }
    }
    return data;
}

カーソルが閉じられているため、開かれているファイルが多すぎるというエラーは何でしょうか?

4

0 に答える 0