Файл базы данных Sqlite3 может быть удален и по-прежнему доступен - PullRequest
0 голосов
/ 27 апреля 2018

Я использую SQLite3 в моей системе RTOS. Я установил конфигурацию так, чтобы она блокировалась для каждой транзакции. В моей системе у меня один файл на диске

"SQLDB.db"

Когда есть транзакция, вы можете обычно видеть файл блокировки, если вы достаточно быстры. "SQLDB.db.lock".

Что меня бесит, так это то, что когда я удаляю «SQLDB.db», у меня все еще есть возможность делать SELECT из базы данных, но я не могу вставить. Это не проблема кэширования, потому что я могу делать выборки для нескольких таблиц (над которыми я не выполнял никаких операций до перезагрузки системы).

Итак, мой вопрос: кэшируется ли файл БД? Это где-то сохраняется в оперативной памяти? Как можно запросить эту призрачную базу данных?

1 Ответ

0 голосов
/ 27 апреля 2018

В Unix, когда вы удаляете файл, запись каталога немедленно удаляется, но фактические данные файла удаляются только тогда, когда закрыты все дескрипторы файлов.

Очевидно, ваша ОСРВ ведет себя так же.

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