2009-05-25 14 views
1

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

クエリは、ネットワーク上でMacからうまく機能します。

空きマルチアクセスはありません。データベースを開いているマシンは1台だけです。いくつかの奇妙なMacネットワークの問題のようだ。 Pythonプログラムでも、SQLite3コマンドラインでも起こります。私はSQLite 3.6.14.2を使用しています。

誰でもこの問題が発生しましたか?それを固定する方法はありますか?これはシンプルなシングルユーザープログラムであるため、MYSQLで重くなりたくはありませんが、複数のマシンから使用したいと思います。

ありがとうございました。

答えて

1

おそらくネットワーク経由でファイルをロックできない場合は、SMBプロトコルを使用していると思いますので、バグはパッケージに含まれています。ネットワーク上でSQLiteを使用する場合は、SQLite Networkを参照してください。

0

I've had a similar problemとそれより新しいsqliteバージョンをインストールすることで解決しました。 Python 2.6以降、新しいsqlite dllを使用しているため、この問題は消えてしまっています。

+0

ウィッシュ。残念ながら私はSQLiteの最新バージョンを実行しています。基本的には、WindowsクライアントがMacベースのネットワーク(私の場合はTime Capsule)上のファイルを照会すると、SQLiteは機能しません。 Windowsや他の* Nixベースのマシンでデータベースを実行するなど、他の順列で遊ぶようになる。 –

2

sqliteのよくある質問を読むhttp://www.sqlite.org/faq.html#q5

"People who have a lot of experience with Windows tell me that file locking of network files is very buggy and is not dependable. If what they say is true, sharing an SQLite database between two or more Windows machines might cause unexpected problems."

をだから、それはMACについて教えてくれない、Windows上で動作しません。

3

DebianでMACで実行できるかどうかわかりません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). 
関連する問題