我一直在使用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的数据导致这样的问题吗?
我只使用开头一次打开连接,只在最后完成所有插入时关闭一次。
我非常感谢这里的专家给予的任何帮助。
提前致谢。
答案 0 :(得分:2)
我终于找到了这个问题。操作系统错误665表示已达到文件系统限制。如果需要大量ATTRIBUTE_LIST_ENTRY来维护NFTS中严重碎片化的文件,则会出现此问题。 NTFS卷中严重碎片化的文件可能不会超出特定大小
我使用/ L选项格式化驱动器以获得大型FRS并解决了这个问题。 我需要确保db不会碎片太多。 希望这有助于某人。