Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何模拟损坏的SQLite数据库_Sqlite_System.data.sqlite - Fatal编程技术网

如何模拟损坏的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