none
SQLiteで、稀に「attempt to write a readonly database」とエラーになる RRS feed

  • 質問


  • VisualStudio2017(VB.NET)とSystem.Data.SQLite.dllを使って、
    SQLiteのデータベースを使ったプログラムを作っています。

    実行していると、稀に「attempt to write a readonly database」とエラーになる場合があります。
    必ず起きるのではなく、レコードの更新や削除時に、ときどき起こり、頻度は多くありません。

    データベースファイルは、NASの共有フォルダに置いています。
    共有に置ていますが、データベースに対して、複数のPCの作成しているプログラムが
    同時にアクセスということはありません。

    エラーを調べると、権限についてよく見つかりますが、NASの設定画面でフォルダの制限などは
    設定しておらず、ファイルの所有者もEveryoneになっています。

    考えられる原因はあるでしょうか?


    ① データベースに対して同時に更新しようとしている?
        → プログラムを確認しても、今のところクローズ漏れや同時に更新されるような箇所は見つけられていません。
           無理やり同時に更新させてみると、エラーになっても「database is locked」となりメッセージが異なりました。

    ② 外部のプログラムの何かがデータベースファイルをロックしている?
        → WindowsDefenderなど、外部のプログラムが影響している可能性はあるでしょうか?

    ③ ネットワークやNASの設定が影響している?
        → この辺り詳しくないため、どの設定などが影響するか見当が付かない状態です。

    以上、よろしくお願い致します。


    2020年9月12日 5:25

すべての返信

  • > データベースファイルは、NASの共有フォルダに置いています。

    が原因なんではないでしょうか
    参照だけならともかく、更新があるなら何が起きても不思議ではないと思います。
    そういうときはSQLServerとか使うかなと思います。
    ローカルではなく共有フォルダに置かないといけない理由があるなら、
    それもいってもらったほうがもしかすると別のアイデアが出るかもしれません。

    2020年9月25日 1:26