代码之家  ›  专栏  ›  技术社区  ›  Bart Bergmans

模型选择时dbflow崩溃。文件太多(2062)

  •  1
  • Bart Bergmans  · 技术社区  · 7 年前

    使用dbflow选择模型时( SQLite.select().from(Schedule.class).where(Schedule_Table.id.eq(scheduleId)).querySingle() )我得到以下错误:

    无法打开数据库文件(代码2062)

    ########################################################### Error Code : 2062 (SQLITE_CANTOPEN_EMFILE) Caused By : Application has

    打开了两个多文件。一个可用文件描述符的最大值 进程默认为1024。(无法打开数据库文件(代码2062))

    #

    是我做错了什么,还是dbflow库中有个bug?崩溃的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;
    }
    

    由于光标正在关闭,打开过多文件可能会出现什么错误?

    0 回复  |  直到 7 年前
    推荐文章