@@ -1059,16 +1059,13 @@ func CleanupDuplicateServerKeys() error {
10591059 serversByID := make (map [uint64 ][]model.Server )
10601060
10611061 for _ , key := range keys {
1062- var id uint64
1063- _ , err := fmt .Sscanf (key , "server:%d" , & id )
1062+ var keyID uint64
1063+ _ , err := fmt .Sscanf (key , "server:%d" , & keyID )
10641064 if err != nil {
10651065 log .Printf ("解析服务器键失败: %s, 错误: %v" , key , err )
10661066 continue
10671067 }
10681068
1069- // 记录键
1070- keysByID [id ] = append (keysByID [id ], key )
1071-
10721069 // 直接从BadgerDB读取数据,绕过FindModel的特殊处理
10731070 data , err := DB .Get (key )
10741071 if err != nil {
@@ -1082,7 +1079,21 @@ func CleanupDuplicateServerKeys() error {
10821079 continue
10831080 }
10841081
1085- serversByID [id ] = append (serversByID [id ], server )
1082+ // 检查键名ID和数据内容ID是否一致
1083+ if keyID != server .ID {
1084+ log .Printf ("发现键名和数据不一致: 键=%s (ID=%d), 数据ID=%d, 名称=%s" , key , keyID , server .ID , server .Name )
1085+ log .Printf ("将删除不一致的键: %s" , key )
1086+ if err := DB .Delete (key ); err != nil {
1087+ log .Printf ("删除不一致键失败: %s, 错误: %v" , key , err )
1088+ } else {
1089+ log .Printf ("成功删除不一致键: %s" , key )
1090+ }
1091+ continue
1092+ }
1093+
1094+ // 记录一致的键和数据
1095+ keysByID [keyID ] = append (keysByID [keyID ], key )
1096+ serversByID [keyID ] = append (serversByID [keyID ], server )
10861097 }
10871098
10881099 // 处理重复的记录
0 commit comments