上一个提交加了 4 个调度字段,却没在 _ADDED_COLUMNS 里登记,后果是生产环境: - 任务列表接口报 Unknown column,UI 打不开任务列表 - 调度器每 20 秒 tick 一次炸一次,定时任务完全不会触发 最阴险的是启动完全正常——能连库、能起来,只是随后每条查询都失败。 - _ensure_columns 不再遍历手写清单,改为遍历 MonitorBase.metadata.sorted_tables, 从根上消掉「加了字段忘了登记」这类漏 - 新增 _column_ddl:用 CreateColumn 渲染类型与可空性,并给 NOT NULL 列补 DEFAULT。 模型的 default= 是 ORM 侧行为、不会进 DDL,而给已有数据的表加 NOT NULL 列必须有值, 否则能否成功取决于服务端 sql_mode - 主键列跳过:MySQL 不允许 AUTO_INCREMENT 与 DEFAULT 共存 新增 tests/test_monitor_column_migration.py 守住:每个 NOT NULL 列都必须能生成带 DEFAULT 的合法 ALTER。