SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; -- 外管登录不再接受客户端选择 App,因此 username 必须在整张账号表中唯一, -- 服务端才能仅凭账号确定唯一租户。该 DDL 不改写任何账号,也不会自动重命名冲突凭据: -- 若历史数据存在同名账号,唯一索引构建会失败并保留原复合索引,要求人工确认归属后再重跑。 -- external_admin_accounts 是小型凭据表;INPLACE + LOCK=NONE 只扫描该表建立二级索引, -- 不扫描 users、房间、钱包等业务表,并允许迁移期间继续读写。并发写入若制造同名账号, -- MySQL 会让索引构建失败而不是提交不唯一结构,保持 fail-closed。 ALTER TABLE external_admin_accounts ADD UNIQUE KEY uk_external_admin_accounts_username (username), DROP INDEX uk_external_admin_accounts_app_username, ALGORITHM=INPLACE, LOCK=NONE;