如何模拟损坏的SQLite数据库
我的应用程序中的部分启动例程通过使用如何模拟损坏的SQLite数据库,sqlite,system.data.sqlite,Sqlite,System.data.sqlite,我的应用程序中的部分启动例程通过使用PRAGMA完整性检查来验证其SQLite数据库API。我正在寻找一种合法地破坏SQLite数据库的方法,这样“完整性检查”就会失败 我曾尝试在文本编辑器中处理数据库文件,但这会导致在打开数据库时捕获到一种类型的损坏,比我调用“完整性检查”要早得多 有什么想法吗?允许您在SQLite背后更改数据库模式,从而违反约束: $ sqlite3 test.db > CREATE TABLE t(x); > CREATE INDEX tx ON t(x);
PRAGMA完整性检查来验证其SQLite数据库代码>API。我正在寻找一种合法地破坏SQLite数据库的方法,这样“完整性检查”就会失败
我曾尝试在文本编辑器中处理数据库文件,但这会导致在打开数据库时捕获到一种类型的损坏,比我调用“完整性检查”要早得多
有什么想法吗?允许您在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