2016-04-16 11 views
2

最近、私はSQLiteのディスクI/Oエラー-45 GBのデータベース

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は後退します。私はトランザクションでインサートを実行しています。私はsqlite dbが45GBのサイズに達してから壊れている可能性があると思っていましたが、問題なくSQLite DB Viewerでdbを開くことができました。このエラーはクライアントマシンで発生しており、開発環境でこれを再現することはできません。この時点で、私はこのエラーがなぜ起こっているのかについての手がかりはありません。 単一の "SQLiteConnection"インスタンスを使用して45Gbのデータを挿入すると、このような問題が発生する可能性がありますか?

私はちょうど最初に接続を開き、すべての私の挿入が最後に完了したときに一度閉じます。

私は本当にここの専門家からの助けに感謝します。

ありがとうございます。

+0

45 GBは実際にSQLiteの限界を超えています。そのようなスケールを扱うように設計されたMySQLまたは別のオプションに移動してみませんか? –

+1

また、ディスクI/Oエラーがハードウェアの問題を示している可能性があります。あなたはディスク自体をチェックしましたか? –

+0

また、一度に45GB *を挿入すると、あなたのように聞こえますが、ページングの問題のようなOSレベルを含む他の問題がある可能性があります。 –

答えて

2

私はついにこの問題を発見しました。オペレーティングシステムのエラー665は、ファイルシステムの制限に達したことを示します。この問題は、NFTSで断片化したファイルを頻繁に維持するために多数のATTRIBUTE_LIST_ENTRYが必要な場合に発生します。 NTFSボリューム内の断片化されたファイルが特定のサイズを超えて拡大しない可能性があります。

大きなFRSを取得するために/ Lオプションを使用してドライブをフォーマットしました。 私は、dbがあまりにも断片化していないことを確認する必要があります。 これは誰かに役立つことを願っています。

関連する問題