Как полностью удалить базу данных sqlite запросов-кеша? [Дубликат]

public crisps(String flavour, int quantity)
{
    super(flavour);
    this.quantity = quantity;
}

Это должно работать как , см. Документы

51
задан Qiao 27 January 2010 в 01:40
поделиться

3 ответа

Команда, которую вы ищете, - vacuum . Существует также прагма для включения автоматического вакуумирования.

Из документации:

Когда объект (таблица, индекс, триггер, или представление) удаляется из базы данных, она оставляет пустое пространство. Это пустое пространство будет повторно использовано в следующий раз, когда новая информация будет добавлена ​​в базу данных. Но в то же время файл базы данных может быть больше, чем это необходимо. Кроме того, частые вставки, обновления и удаления могут привести к фрагментации информации в базе данных - скомпилировать все файлы базы данных, а не группировать их в одном месте.

Команда VACUUM очищает основную базу данных с помощью копируя его содержимое во временный файл базы данных и перезагружая исходный файл базы данных из копии. Это устраняет бесплатные страницы, выравнивает данные таблицы, чтобы быть смежными, и в противном случае очищает структуру файла базы данных.

83
ответ дан Trent 27 August 2018 в 22:02
поделиться
  • 1
    есть ли способ восстановить строки, не удаленные из таблицы? – Blauhirn 23 May 2016 в 12:01

Вы можете сделать это

$db->exec("DELETE FROM table");
$db->exec("vacuum");

, и размер файла будет изменен.

19
ответ дан Community 27 August 2018 в 22:02
поделиться

Очистка баз данных SQLite имеет две команды, предназначенные для очистки-реиндекса и вакуума. reindex используется для восстановления индексов. Он имеет две формы: reindex collation_name; reindex table_name | index_name;

-2
ответ дан gfajardog 27 August 2018 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: