SQLite 磁盘 I/O 错误 - 45 Gb 数据库

标签 sqlite sqlite.net

我已经使用 SQLite 数据库一段时间来存储我的数据,没有任何问题,直到最近我遇到了

disk I/O error

   at Finisar.SQLite.sqlite3.Throw()
   at Finisar.SQLite.sqlite3.exec(String sql)
   at Finisar.SQLite.SQLiteTransaction.CommitOrRollback(Boolean commit)

SQLite 数据库所在的本地驱动器上有足够的空间。我正在事务中运行插入。我怀疑 sqlite 数据库可能已损坏,因为它的大小达到了 45GB,但是我能够在 SQLite DB 查看器中打开该数据库,没有任何问题。此错误发生在客户端计算机上,我无法在开发环境中重现此错误。此时,我不知道为什么会出现此错误。 使用单个“SQLiteConnection”实例插入 45Gb 数据会导致这样的问题吗?

我在开始时仅打开连接一次,并在最后完成所有插入时仅关闭一次。

我非常感谢这里专家的帮助。

提前致谢。

最佳答案

终于找到问题了。操作系统错误 665 表示已达到文件系统限制。如果需要大量 ATTRIBUTE_LIST_ENTRY 来维护 NFTS 中碎片严重的文件,则会出现此问题。 NTFS 卷中碎片严重的文件可能不会增长超过特定大小

我使用/L 选项格式化驱动器以获得大 FRS,这解决了问题。 我需要确保数据库不会碎片太多。 希望这对某人有帮助。

关于SQLite 磁盘 I/O 错误 - 45 Gb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659745/

相关文章:

c# - 如何使用 Sqlite.Net 扩展过滤器

SQLite 默认值为 bool 列,未按预期工作

php - 使用插入CI的数据库锁定错误

java - 如何通过用户输入向sqlite插入数据?

visual-studio-2008 - nHibernate 和 sqlite 映射

android - Xamarin SQLite.NET 通用表查询

javascript - 将输入传递给 sqlite IN 运算符(Javascript、Cordova)

SQLite:将数据插入表时出现 SQL 错误或缺少数据库

c# - 如何使用 linq 返回 TableOjb1 和 TableObj2 的 Wrapper obj