スポンサーリンク
スポンサーリンク

SQLiteの Tempフォルダパスを変更する場合はプロセスの環境変数を変更する

C#Linux・ShellSQLiteVisual StudioWindowsデータベース

SQLiteが使用するTEMPフォルダは、OSの TEMP/TMP環境変数に設定されたフォルダを使用する為、OSの TEMP/TMPフォルダのドライブに空きが少ない状態で、大量データを SQLiteが処理すると、「System.Data.SQLite.SQLiteException:database or disk is full」エラーが発生する。

ドライブの空き容量の確保や、OSのTEMP/TMP環境変数のパス変更が難しい場合、アプリケーションの事情で SQLiteの Tempフォルダを個別に指定したい場合は、アプリケーションのプロセス起動時にTEMP/TMP環境変数のパスを変更することで、SQLiteが使用するTEMPフォルダを変更することができる。

SQLiteが使用する環境変数は幾つかあるので、プロセス開始時にそれぞれ変更してしまうのが無難。下記は C#でプロセスの環境変数を変更する例。

※Windowsの場合は TMPと TEMPですが、UNIX系では TMPDIRと SQLITE_TMPDIRを変更します。

SQLiteの temp_store_directoryオプションで、SQLiteの TEMPフォルダの変更することもできますが、非推奨なのでプロセスの環境変数を変更する方が良いです。

SQLiteが Tempフォルダに一時ファイルを作成している様子は、Process Monitorで監視すると分かり易い。

 

コメント

タイトルとURLをコピーしました