Ошибка «База данных заблокирована» в SQLite через сеть Mac - PullRequest
1 голос
/ 26 мая 2009

Я создал простую базу данных с использованием SQLite (фактически PySQLite). Он отлично работает, когда я запрашиваю или записываю в базу данных с локального компьютера (то есть файл программы и базы данных на диске Windows). Однако, когда я копирую файл базы данных на свой сетевой диск (временную капсулу), тогда машины Windows, хотя они могут видеть файлы и имеют полный доступ на чтение и запись к диску, выдают мне сообщение «Ошибка SQL: база данных заблокирована», даже при выполнении простого выбора!

Запросы отлично работают по сети с Mac.

Не существует причудливого мультидоступа - база данных открыта только на одном компьютере. Похоже, странная проблема с сетью Mac. Происходит либо в программе Python, либо в командной строке SQLite3. Я использую SQLite 3.6.14.2.

Кто-нибудь видел эту проблему? Есть ли способ исправить это? На самом деле я не хочу разбираться с MYSQL, потому что это простая однопользовательская программа, но я бы хотел использовать ее с нескольких машин.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 11 сентября 2009

Я не знаю, можно ли это сделать на MAC, в Debian мне нужно смонтировать каталог samba с опцией nobrl .

Из 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).
2 голосов
/ 29 мая 2009

Прочтите FAQ по sqlite: http://www.sqlite.org/faq.html#q5

"Люди, у которых большой опыт с виндой скажи что блокировка файлов сетевых файлов очень глючит и не надежный Если то, что они говорят, правда, совместное использование базы данных SQLite между двумя или более компьютерами Windows может вызвать неожиданные проблемы. "

Так что он не работает в Windows, он не говорит о MAC.

1 голос
/ 26 мая 2009

Возможно, он не может заблокировать файл по сети, я думаю, что вы используете протокол SMB, так что ошибка идет с пакетом. Если вы хотите использовать SQLite по сети, см. Сеть SQLite для альтернатив.

0 голосов
/ 26 мая 2009

У меня была похожая проблема , и я решил ее, установив более новую версию sqlite. Начиная с Python 2.6 проблема также исчезла, поскольку она использует более новую DLL-библиотеку sqlite.

...