2

SQLite (実際には PySQLite) を使用して単純なデータベースを作成しました。ローカル マシン (つまり、Windows マシン ドライブ上のプログラムとデータベース ファイル) からデータベースにクエリを実行したり、データベースに書き込んだりすると、問題なく動作します。ただし、データベース ファイルをネットワーク ドライブ (タイム カプセル) にコピーすると、Windows マシンはファイルを表示でき、ドライブへの完全な読み取り/書き込みアクセス権を持っていますが、「SQL エラー: データベースがロックされています」というメッセージが表示されます。単純な選択を実行するとき!

クエリは、Mac からネットワーク経由で正常に動作します。

派手なマルチアクセスは行われていません - 1 台のマシンだけがデータベースを開いています。奇妙な Mac ネットワークの問題のようです。Python プログラムまたは SQLite3 コマンド ラインで発生します。SQLite 3.6.14.2 を使用しています。

誰もこの問題を見ましたか?それを修正する方法はありますか?これは単純なシングル ユーザー プログラムであるため、MYSQL を使いこなしたくありませんが、複数のマシンから使用したいと考えています。

ありがとう。

4

4 に答える 4

5

MAC で実行できるかどうかはわかりません。Debian では、nobrlオプションを使用して samba ディレクトリをマウントする必要があります。

mount.cifs(8) から:

  nobrl
      Do not send byte range lock requests to the server. This is
      necessary for certain applications that break with cifs
      style mandatory byte range locks (and most cifs servers do
      not yet support requesting advisory byte range locks).
于 2009-09-11T07:47:45.923 に答える
2

sqlite FAQ を読んでください: http://www.sqlite.org/faq.html#q5

「Windows の経験が豊富な人は、ネットワーク ファイルのファイル ロックは非常にバグが多く、信頼できないと言っています。彼らの言うことが本当なら、2 つ以上の Windows マシン間で SQLite データベースを共有すると、予期しない問題が発生する可能性があります。」

そのため、Windows では動作せず、MAC についてはわかりません。

于 2009-05-29T14:49:01.540 に答える
1

ネットワーク経由でファイルをロックできない可能性があります。SMB プロトコルを使用していると思われるため、パッケージにはバグがあります。ネットワーク経由で SQLite を使用する場合は、SQLite Networkの代替方法を参照してください。

于 2009-05-25T20:49:31.593 に答える
0

私も同様の問題を抱えていましたが、新しいsqliteバージョンをインストールすることで解決しました。Python 2.6以降、新しいsqlite dllを使用しているため、問題も解消されています。

于 2009-05-25T21:25:33.033 に答える