使用来自 table 结构的散列进行模式验证。 SQLite

Schema verification using the hash from table-structure. SQLite

在一个不断变化的应用程序中,我想验证预期的模式确实是数据库的模式。

首先,我在一个额外的元table中存储了一个模式版本,但有时当模式改变时忘记更新这个版本。

现在我正在考虑生成架构的哈希值(所有 table 名称和列名的简单连接就足够了)并将其存储为版本。

有用吗?有没有更简单的方法,特别是对于 SQLite?

SQLite 数据库有一个内部 file change counter 能够检测其他进程所做的更改,但这适用于所有更改。没有模式更改机制。

存储模式的散列会起作用。
请注意,最简单的方法是对 sqlite_master tablesql 列的内容进行哈希处理,并正确排序。