使用 DBFlow ( SQLite.select().from(Schedule.class).where(Schedule_Table.id.eq(scheduleId)).querySingle()
) 选择模型时,出现以下错误:
无法打开数据库文件(代码 2062)
################################################# ######### 错误代码:2062 (SQLITE_CANTOPEN_EMFILE) 原因:应用程序有打开两个很多文件。一个进程中可用文件描述符的最大值默认为 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;
}
由于光标正在关闭,打开太多文件的可能错误是什么?