• Data Governance Dev's avatar
    fix(web3): 迁移函数不再 DROP TABLE,避免清空 field/rule 数据 · d0416a21
    Data Governance Dev authored
    之前 _migrate_field_unique / _migrate_connection_preset_unique 用
    `sqlite_master WHERE type='index' AND name='uq_xxx'` 检测 UNIQUE 约束,
    但 SQLite 把 table-level UNIQUE 约束内联到 CREATE TABLE、不会单独建
    type='index' 条目(实际生效的是隐式 sqlite_autoindex_<table>_<n>),
    导致每次启动都误判「缺 UNIQUE」→ DROP TABLE field → CASCADE 清 rule
    → 重建空表 → 用户配的字段+规则全部丢失(log 里连续 8 次 WARNING 证据)。
    
    修法:检测用 pragma_index_list 或不限 type 的 sqlite_master WHERE name=...;
    补建用 CREATE UNIQUE INDEX IF NOT EXISTS(幂等,与 autoindex 不冲突)。
    不再 DROP TABLE。
    
    ⚠️ 修复前的所有 task 字段+规则数据已物理丢失,task 表本身保留;
    用户需要重新点编辑配置字段和规则。
    d0416a21
database.py 6.84 KB