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

SQLite磁盘I/O错误-45 Gb数据库,sqlite,sqlite.net,Sqlite,Sqlite.net,我使用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后退的本地驱动器上有足够的空间。我正在事务中运行插入。我怀疑s

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

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

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


提前谢谢。

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

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

45GB确实超出了SQLite的极限。为什么不使用MySQL或其他设计用于处理这种规模的选项呢?此外,磁盘I/O错误可能表明存在硬件问题。你检查过磁盘本身吗?另外,如果你一次插入45 GB,听起来像是这样,你可能会有其他问题,包括操作系统级别的问题,比如分页问题。我在事务中插入了100条记录,数据库的大小已经达到45 GB。我看到日志文件是用一些数据创建的,并在这个阶段被删除,但是数据库的大小不再增加。我在日志文件中看到的所有磁盘I/o错误日志。@EdCottrell即使页面大小尽可能小,SQLite数据库文件也可能大到1 TB。