Как разблокировать базу данных SQLite? - PullRequest
235 голосов
/ 30 сентября 2008
sqlite> DELETE FROM mails WHERE (`id` = 71);
SQL error: database is locked

Как разблокировать базу данных, чтобы она работала?

Ответы [ 35 ]

0 голосов
/ 03 марта 2016

У меня были ошибки «база данных заблокирована» в многопоточном приложении, которое выглядит как код результата SQLITE_BUSY , и я решил его, установив sqlite3_busy_timeout что-то подходящее долго, как 30000.

(Кстати, как странно, что по 7-летнему вопросу никто не узнал об этом уже! SQLite действительно необычный и удивительный проект ...)

0 голосов
/ 07 января 2010

Как сказал Сеун Осева, иногда процесс зомби будет сидеть в терминале с заблокированным замком, даже если вы не думаете, что это возможно. Ваш сценарий запускается, аварийно завершает работу, и вы возвращаетесь к приглашению, но где-то в процессе вызова библиотеки появляется процесс зомби, и этот процесс заблокирован.

Закрытие терминала, в котором вы были (в OSX), может работать. Перезагрузка будет работать. Например, вы можете искать процессы «python», которые ничего не делают, и убивать их.

0 голосов
/ 24 мая 2014

По какой-то причине база данных заблокирована. Вот как я это исправил.

  1. Я скачал файл sqlite в свою систему (FTP)
  2. Удалил файл sqlite онлайн
  3. Загрузил файл обратно хостинг-провайдеру

Теперь работает нормально.

0 голосов
/ 15 марта 2014

Я получил эту ошибку при использовании Delphi с компонентами LiteDAC. Оказалось, что это происходило только при запуске моего приложения из Delphi IDE, если для свойства подключения было установлено значение True для компонента подключения SQLite (в данном случае TLiteConnection).

0 голосов
/ 27 июня 2010

вы можете попробовать это: .timeout 100, чтобы установить время ожидания. Я не знаю, что происходит в командной строке, но в C # .Net, когда я делаю это: "UPDATE table-name SET column-name = value;" Я получаю базу данных заблокирована, но это "UPDATE table-name SET column-name = value" все идет хорошо.

Похоже, что при добавлении; sqlite будет искать дальнейшую команду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...