一位同事通过添加煤层来在唯一约束中添加colesce来强制执行零值,从而创建了一个带有奇怪唯一键(以围绕无效处理(的表。尝试使用DBVisualizer Pro打开数据库时,我会收到下面的错误,但是在使用SQLite Expert Professional时,它似乎可以打开良好(我正在对其进行试用(:
sqlite_corrupt:数据库磁盘映像已畸形(畸形的数据库架构(ux_test( - 靠近"("(":Syntax错误(
ddl:
CREATE TABLE Test (
Id integer NOT NULL PRIMARY KEY AUTOINCREMENT,
val1 integer,
val2 integer,
val3 integer
);
CREATE UNIQUE INDEX ux_test ON Test(val1, COALESCE(val2, -1), COALESCE(val3, -1));
我向DBVisualizer提供了支持,以提供帮助,并被告知这是一个sqlite错误。谁能提供对此的见解?仅供参考,cocece((是独特的钥匙,因为SQLITE处理无效值。在约束中,无效值没有相等。此外,如果命中约束,他们更喜欢使用INSERT OR REPLACE INTO
,因此BEFORE
触发器无法正常工作。
谢谢。
编辑:CL的答案(下图(似乎是问题的;DBVisualizer Pro使用SQLite版本3.8.11,与3.18.0的当前版本。我正在尝试查看是否可以更新DLL的更新,因为它确实是一个很好的应用程序。谢谢!
文档说:
使用3.9.0版(2015-10-14(将索引表达式的能力添加到SQLite中。在表达式上使用索引的数据库将无法通过SQLite的早期版本可用。
显然,您的dbvisualizer已过时。