Я занимаюсь разработкой приложения phonegap + jquery-mobile + KO с автономным хранилищем, используя web sql через persistencejs и jasmine js для BDD.
Я работаю над своего рода «очистителем базы данных», который будет выполняться после каждой спецификации. Когда я искал, как удалить базу данных web sql, я прочитал ответ https://stackoverflow.com/a/10929725/667598 (в этой теме / вопросе) и пошел посмотреть, что находится в этом каталоге (Mac OS X).
cd ~/Library/Application\ Support/Google/Chrome/Default/databases
Внутри вы увидите базу данных Dite.db SQLite3 и каталоги для каждого источника. Эти каталоги именуются с помощью шаблона protocol_host_somenumber (я не знаю, что это за номер). Так, например, в моем случае, поскольку мои приложения - это просто файлы, которые я открываю в Google Chrome с протоколом file: ///…, я могу видеть каталог file__0. И для твиттера, и я также могу увидеть http_twitter.com_0 и https_twitter.com_0.
Внутри этих каталогов все имена файлов являются просто числами. Например, внутри файла __0 я нашел файл с именем 8, а другой - с именем 9. В моем случае это файлы базы данных websql. Я не знаю, есть ли базы данных Indexed DB в chrome Default/databases
dir.
С этими именами немного сложно догадаться, что это за база данных. Вы можете открыть базу данных, и вам придется выводить приложение или сайт через их таблицы и данные.
К счастью, упомянутый выше файл Databases.db представляет собой сопоставление файлов с именами с номерами и базами данных.
Вы можете открыть файл Databases.db и любой другой веб-файл sql с помощью команды sqlite3
sqlite3 Databases.db
Очевидно, что, попав в оболочку sqlite3, полезно иметь некоторые знания SQL. В любом случае, это также всегда полезная помощь, которая доступна через команду
.help
С помощью команды .tables
вы можете просмотреть таблицы в базе данных. Внутри этого Databases.db мы можем найти таблицы Databases и meta. Важным является Базы данных, поэтому с
select * from Databases;
мы можем видеть соответствие между базами данных и их файлами. Например
7 | http_jquerymobile.com_0 | testdb | html5 test db | 200000
8 | file__0 | elfaro_dev | База данных ElFaro para desarrollo | 734003200
Первый столбец - это идентификатор таблицы, который является номером, используемым для имен файлов БД, второй - это источник (каталог), другие столбцы - это имя БД, описание БД и предполагаемый размер, использованный при создании БД из Javascript API.
Таким образом, чтобы фактически удалить базу данных, я удалил ее из этой таблицы, например:
delete from Databases where id = 8
А затем удалить сам файл из файловой системы (вне оболочки sqlite3)
rm file__0/8
И это все.
PS: Я знаю, что это слишком длинный ответ для простой темы, но мне просто нужно было стереть это из моей системы и создать резервную копию где-нибудь вроде SO или блога.