1

使用 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;
}

由于光标正在关闭,打开太多文件的可能错误是什么?

4

0 回答 0