SQLite3: невозможно открыть базу данных - PullRequest
0 голосов
/ 10 сентября 2011

Я пытался выяснить эту проблему в течение достаточно долгого времени и искал все нормальные решения.Я пытаюсь запустить .backup в базе данных sqlite.Я не думаю, что это имеет значение, но именно эта база данных используется Membase и также работает в облаке Amazon.И папка, в которую я создаю резервную копию, и папка, из которой поступает база данных, имеют разрешения 777 (что является обычной причиной этого сообщения).Если я выполняю команду резервного копирования, она выполняется в процессе резервного копирования, а затем процесс просто зависает при использовании ресурсов процессора и приводит меня к завершению процесса sqlite.Я даже прошел через chmod 777 сам файл базы данных.

Вот что происходит:

/opt/membase/bin/sqlite3 /mnt/data-store/default-data/default-0.mb '.backup /mnt/data-backup/mbfiles/test.mb'

Error: unable to open database file

Когда я ls -la папка:

drwxrwxrwx 2 membase membase      4096 Sep 10 15:41 .
drwxrwxrwx 4 membase root         4096 Aug  5 01:10 ..
-rw-r--r-- 1 membase membase     53248 Sep 10 15:41 default
-rwxrwxrwx 1 membase membase 849593344 Sep 10 15:41 default-0.mb

Ипапка резервной копии:

drwxrwxrwx 2 ec2-user ec2-user 4096 Sep 10 15:41 .
drwxrwxrwx 4 root     root     4096 Sep  3 00:26 ..

Кроме того, поскольку я слышал, что это имеет значение, разрешение / tmp

drwxrwxrwt  3 root root 4096 Sep 10 03:32 .

Я пытался исправить это уже более недели, илюбые новые идеи будут оценены.Следует отметить, что это производственная среда, поэтому перезапуск не возможен.

РЕДАКТИРОВАТЬ: Я проверил и могу создать резервную копию меньшего файла «по умолчанию», но не большего размера БД, так что это исключает любыевроде проблема с разрешениями на папки.Любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2011

Это похоже на проблему с sqlite.Мы видели спорадические случаи появления этой ошибки у других клиентов, но пока не смогли ее отследить или устранить.По мнению экспертов sqlite, этого никогда не должно происходить; -)

Можете ли вы остановить процесс Membase для дальнейшего тестирования?Если это так, попытка создать резервную копию (убедитесь, что процесс memcached остановлен) в этот момент исключит любую проблему с программным обеспечением, обращающимся к файлу.Если это все еще не работает в этот момент, я знаю, что есть инструменты для проверки базы данных sqlite (просто не берите их в голову).

Вы также можете использовать комбинацию ".dump "и" .restore "через sqlite, но я бы не рекомендовал запускать его на работающем узле Membase, так как мы не тестировали эффекты.

Perry

...