Как удалить все файлы базы данных в sqlite3? - PullRequest
1 голос
/ 25 октября 2019

Как удалить все файлы базы данных в sqlite3?

Я пытаюсь удалить созданное мной имя файла, но остаются некоторые странные файлы.

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

С https://www.sqlite.org/tempfiles.html:

SQLite currently uses nine distinct types of temporary files:

Rollback journals
Master journals
Write-ahead Log (WAL) files
Shared-memory files
Statement journals
TEMP databases
Materializations of views and subqueries
Transient indices
Transient databases used by VACUUM

В том же каталоге, что и файл базы данных, всегда записывается следующее:

  • журнал отката (с тем же именем, что ифайл базы данных, но с добавленным 8-символьным «-journal»

  • WAL («-wal»)

  • файл с общей памятью(добавлено "-shm")

  • Файл основного журнала (рандомизированный суффикс)

Другие временные файлы могут находиться в том же каталоге, в зависимости отна различные факторы.

Для получения более подробной информации см. ссылку выше.

По запросу

Если DBNAME является путем к базе данных SQLite, вы можете рассмотреть следующиеварианты удаления всех связанных файлов в каталоге, в котором находится файл базы данных:

rm -i ${DBNAME} ${DBNAME}-*

или:

rm -i ${DBNAME}*

или, если вы совершенно уверены, либо один из приведенных выше, нобез -i

2 голосов
/ 25 октября 2019

Если имя файла базы данных sqlite3 - "/xxx/test.db", вам нужно попытаться удалить следующие четыре файла:

  • "/ xxx / test.db"
  • "/xxx/test.db-shm"
  • " / xxx / test.db-wal "
  • " / xxx / test.db-journal "

Эти четыре файла могут существовать, а могут и не существовать, поэтому вы должны игнорировать ошибку «файл не существует» во время системного вызова unlinkat / unlink.

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