2

我一直在使用 SQLite db 来存储我的数据而没有任何问题,直到最近我遇到

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

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

我非常感谢这里的专家提供的任何帮助。

提前致谢。

4

1 回答 1

2

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

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

于 2016-04-21T06:15:08.680 回答