SQLITE_CORRUPT table 错误,UNIQUE 索引包含使用 DbVisualizer 的 COALESCE()

SQLITE_CORRUPT error on table with UNIQUE index containing COALESCE() using DbVisualizer

一位同事通过添加 COALESCE 以在唯一约束中强制执行 NULL 值,创建了一个带有奇怪 UNIQUE 键(以绕过 NULL 处理)的 table。我在尝试使用 DbVisualizer Pro 打开数据库时收到以下错误,但在使用 SQLite Expert Professional 时似乎可以正常打开(我正在试用它们):

SQLITE_CORRUPT: The database disk image is malformed (malformed database schema (ux_test) - near "(": 语法错误)

DDL: 创建 TABLE 测试 ( Id 整数 NOT NULL PRIMARY KEY AUTOINCREMENT, val1 整数, val2 整数, val3 整数 );</p> <p>在测试时创建唯一索引ux_test(val1, COALESCE(val2, -1), COALESCE(val3, -1));

我就此问题向 DbVisualizer 支持寻求帮助,并被告知这是一个 SQLite 错误。任何人都可以对此提供任何见解吗?仅供参考,由于 SQLite 处理 NULL 值的方式,COALESCE() 位于唯一键中;它在约束中看不到 NULL 值相等。此外,如果满足约束,他们更喜欢使用 INSERT OR REPLACE INTO,因此 BEFORE 触发器将不起作用。

谢谢。

编辑:CL 的回答(下方)似乎是问题所在; DbVisualizer Pro 使用 SQLite 3.8.11 版,而当前版本为 3.18.0。我正在尝试查看是否可以获得对所用 dll 的更新,因为它确实是一个很棒的应用程序。谢谢!

documentation 说:

The ability to index expressions was added to SQLite with version 3.9.0 (2015-10-14). A database that uses an index on expressions will not be usable by earlier versions of SQLite.

显然,您的 DbVisualizer 已经过时了。