我有一个大小超过 2.6 GiB 的 SQLite 数据库。 (数据库包含地图。)
该数据库由 RMaps 应用程序使用。当以最大缩放比例将地图移动到某些部分时,应用程序突然关闭。但是,没有强制关闭消息,也没有报告按钮。所以,我有一个想法,它是由超出一定限制的读取块引起的,例如最大值(整数)。由于 RMaps 只是使用简单的 SQL 语句,我认为问题不在于 RMaps,而在于 Android SQLite 驱动程序。
Android 上的 SQLite 数据库有大小限制吗?
(我在 Nexus One 上有 Froyo,但我不认为这只是 Froyo 的问题。)
日志输出:
08-14 10:24:51.689 I/ActivityManager( 81): Starting activity: Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.robert.maps/.MainMapActivity (has extras) }
08-14 10:25:01.879 E/AndroidRuntime(12441): FATAL EXCEPTION: pool-1-thread-2
08-14 10:25:01.879 E/AndroidRuntime(12441): android.database.sqlite.SQLiteDiskIOException: disk I/O error
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:70)
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:283)
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:264)
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
08-14 10:25:01.879 E/AndroidRuntime(12441): at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
08-14 10:25:01.879 E/AndroidRuntime(12441): at com.robert.maps.utils.CashDatabase.getTile(CashDatabase.java:49)
08-14 10:25:01.879 E/AndroidRuntime(12441): at org.andnav.osm.views.util.OpenStreetMapTileFilesystemProvider$7.run(OpenStreetMapTileFilesystemProvider.java:501)
08-14 10:25:01.879 E/AndroidRuntime(12441): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-14 10:25:01.879 E/AndroidRuntime(12441): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-14 10:25:01.879 E/AndroidRuntime(12441): at java.lang.Thread.run(Thread.java:1096)
08-14 10:25:01.889 I/ActivityManager( 81): Process com.robert.maps (pid 12441) has died.
08-14 10:25:01.899 I/WindowManager( 81): WIN DEATH: Window{45131410 com.robert.maps/com.robert.maps.MainMapActivity paused=false}
SQLite数据库存储在SD卡上,有足够的空间。
字符串或 BLOB 的最大长度 默认大小为 1 GB 最大大小为 2.147483647
最大列数 默认大小为 2000 最大大小为 32767
SQL 语句的最大长度 默认大小为 1 MB 最大大小为 1.073741824
连接中的最大表数默认为 64 个表
附加数据库的最大数量 默认为 10 最大大小为 125
表中的最大行数最大大小为 18446744073.709552765
最大数据库大小 140 tb,但这取决于您的设备磁盘大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)