pub async fn run_on_conn(conn: &mut Object) -> Result<(), MigrateError>Expand description
在已获取的连接上执行迁移主体逻辑(咨询锁 + 建表 + 应用迁移 + 解锁)。
调用方负责自行控制连接获取策略——例如 main.rs 启动时用
get_conn_for_startup(长重试窗口)
拿到连接后再调用本函数,以应对 DB 尚未就绪的场景。
流程:
- 抢咨询锁(多实例启动时串行化)
- 确保
schema_migrations表存在 - 查询已应用版本集合
- 按序应用未应用的迁移(每个一个事务)
- 释放咨询锁
失败时返回错误;调用方(main.rs)应让进程退出,避免启动半残服务。