Skip to content

Commit d735171

Browse files
committed
Update.
1 parent af94757 commit d735171

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

db/badger.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)