Skip to main content

run_on_conn

Function run_on_conn 

Source
pub async fn run_on_conn(conn: &mut Object) -> Result<(), MigrateError>
Expand description

已获取的连接上执行迁移主体逻辑(咨询锁 + 建表 + 应用迁移 + 解锁)。

调用方负责自行控制连接获取策略——例如 main.rs 启动时用 get_conn_for_startup(长重试窗口) 拿到连接后再调用本函数,以应对 DB 尚未就绪的场景。

流程:

  1. 抢咨询锁(多实例启动时串行化)
  2. 确保 schema_migrations 表存在
  3. 查询已应用版本集合
  4. 按序应用未应用的迁移(每个一个事务)
  5. 释放咨询锁

失败时返回错误;调用方(main.rs)应让进程退出,避免启动半残服务。