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

时间:2016-04-16 03:20:05

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

我只使用开头一次打开连接,只在最后完成所有插入时关闭一次。

我非常感谢这里的专家给予的任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

我使用/ L选项格式化驱动器以获得大型FRS并解决了这个问题。 我需要确保db不会碎片太多。 希望这有助于某人。