fix-duplicate-sys-user-demo01.sql 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. -- 将「非种子」的重复账号 Demo01 改名为 Demo02,保留官方种子用户 Id = 1300000000117
  2. -- 执行前请:USE 你的库名; 并做好备份
  3. --
  4. -- 表名取决于 Database.json → DbSettings.EnableUnderLine:
  5. -- false:表 SysUser,列 Id / Account / RealName / UpdateTime(驼峰)
  6. -- true :表 sys_user,列 id / account / real_name / update_time(下划线)
  7. -- 下面默认写下划线版;若库为 SysUser,把 sys_user 改为 SysUser、列名改为驼峰即可。
  8. -- ========== 1. 预览 ==========
  9. SELECT id,
  10. tenant_id,
  11. account,
  12. real_name,
  13. phone,
  14. remark,
  15. create_time
  16. FROM sys_user
  17. WHERE account IN ('Demo01', 'Demo02')
  18. ORDER BY account, id;
  19. -- ========== 2. 保留的种子 Demo01 Id(若与你库不一致请修改)==========
  20. SET @keep_demo01_id = 1300000000117;
  21. -- ========== 3. 目标账号 Demo02 必须尚不存在(框架全局账号唯一)==========
  22. SELECT id, account, real_name
  23. FROM sys_user
  24. WHERE account = 'Demo02';
  25. -- 上面若有结果:请先换一个未占用账号,并把下面 UPDATE 里的 Demo02 改成新名字
  26. -- ========== 4. 重命名:非种子的 Demo01 → Demo02 ==========
  27. START TRANSACTION;
  28. UPDATE sys_user
  29. SET account = 'Demo02',
  30. update_time = NOW(3)
  31. WHERE account = 'Demo01'
  32. AND id <> @keep_demo01_id;
  33. COMMIT;
  34. -- ========== 5. 校验 ==========
  35. SELECT id, tenant_id, account, real_name, phone
  36. FROM sys_user
  37. WHERE account IN ('Demo01', 'Demo02')
  38. ORDER BY account, id;
  39. -- 期望:一条 Demo01(id = @keep_demo01_id),一条 Demo02(原重复那条)
  40. -- ========== 附录:若仍要物理删除非种子 Demo01(慎用)==========
  41. -- 需先按 user_id 清理子表,见本文件历史版本或自行处理外键后再 DELETE。