【发布时间】:2020-02-07 02:42:07
【问题描述】:
我正在开发一个颤振应用程序,我使用标准 SQLite 数据库来存储来自传感器的信息。 我收到了错误:
E/SQLiteQuery(11895): exception: Row too big to fit into CursorWindow requiredPos=0, totalRows=3; query: SELECT sessionId, deviceId, startDate, endDate, ... , timestamp FROM sessions
E/flutter (11895): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(Row too big to fit into CursorWindow requiredPos=0, totalRows=3) sql 'SELECT sessionId, deviceId, startDate, endDate, ..., timestamp FROM sessions'}
当我试图读取保存在包含大量内容的“会话”表中的数据时。
3 个昏暗阵列的 5 个传感器,每 100 毫秒,在 30 分钟内,但可能更多...> 300 000 个数字数据 每个会话(最多 10 个月)。
如何避免这种'row to big'的错误?
【问题讨论】:
-
sessions表中是否有任何 blob 字段? -
字面意思是
blob,当然不是。它们都有特定的名称,请查看 SQLite 查询:SELECT sessionId, deviceId, startDate, endDate, ... , timestamp FROM sessions -
对于大行,它们是 JSON 字符串化的二维数组。让我们称他们为
rowA, rowB, rowC,rowD。包含:"[[95,90], [96,95], ... ]"以形状 (X,Y) 为例,其中 Y 是已知的,但 X 是可变的。 -
它们很大吗?比如一两MB?
-
你可能是对的。我在某处看到过这样的事情......那么我应该如何在 SQLite 中管理这么多数据?
标签: sqlite flutter dart large-data