android数据库的存储上限_Android上的SQLite数据库的最大大小是多少?

这篇博客探讨了在Android设备上使用SQLite数据库时遇到的问题,尤其是关于数据库存储容量的限制。作者提到一个2.6 GiB的SQLite数据库在RMaps应用中导致了崩溃,怀疑是由于Android对SQLite数据库大小的限制。日志显示错误为SQLiteDiskIOException,提示磁盘I/O错误。虽然SQLite通常支持较大的数据库,但问题可能是由于其他因素,如读取操作超过了某些限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个大小超过2.6 GiB的SQLite数据库。 (数据库包含地图。)

该数据库由RMaps应用程序使用。当将地图移动到最大缩放时的某些部分时,应用程序将突然关闭。但是,没有强制关闭消息,没有报告按钮。所以,我有一个想法,它是由阅读块超出一定的限制, MAX(INT)。由于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 db存储在SD卡上,有足够的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值