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;
}
カーソルが閉じられているため、開かれているファイルが多すぎるというエラーは何でしょうか?