Как смоделировать поврежденную базу данных SQLite

Часть процедуры запуска в моем приложении проверяет свои базы данных SQLite с помощью PRAGMA integrity_check; API. Я ищу способ законно повредить базу данных SQLite, чтобы эта «проверка целостности» не удалась.

Я пробовал возиться с файлом базы данных в текстовом редакторе, но это приводит к повреждению, которое обнаруживается при открытии базы данных намного раньше, чем мой призыв к «проверке целостности».

Любые идеи?


person Aaron Hudon    schedule 10.08.2015    source источник


Ответы (1)


PRAGMAwritable_schema позволяет вам изменять схему базы данных за спиной SQLite и таким образом нарушать ограничения:

$ sqlite3 test.db
> CREATE TABLE t(x);
> CREATE INDEX tx ON t(x);
> INSERT INTO t VALUES (1), (1);
> PRAGMA writable_schema = 1;
> UPDATE sqlite_master
>   SET sql = 'CREATE UNIQUE INDEX tx ON t(x)'
>   WHERE type = 'index' AND name = 'tx';
> .quit
$ sqlite3 test.db   # reload
> PRAGMA integrity_check;
non-unique entry in index tx
person CL.    schedule 10.08.2015