diff --git a/models/migrations/v210.go b/models/migrations/v210.go
index cf50760b92c33..53461c03e9462 100644
--- a/models/migrations/v210.go
+++ b/models/migrations/v210.go
@@ -137,17 +137,23 @@ func remigrateU2FCredentials(x *xorm.Engine) error {
 					CreatedUnix:     reg.CreatedUnix,
 				}
 
-				has, err := sess.ID(reg.ID).Where("id = ?", reg.ID).Get(new(webauthnCredential))
+				has, err := sess.ID(reg.ID).Get(new(webauthnCredential))
 				if err != nil {
 					return fmt.Errorf("unable to get webauthn_credential[%d]. Error: %w", reg.ID, err)
 				}
 				if !has {
-					_, err = sess.Insert(remigrated)
+					has, err := sess.Where("`lower_name`=?", remigrated.LowerName).And("`user_id`=?", remigrated.UserID).Exist(new(webauthnCredential))
 					if err != nil {
-						return fmt.Errorf("unable to (re)insert webauthn_credential[%d]. Error: %w", reg.ID, err)
+						return fmt.Errorf("unable to check webauthn_credential[lower_name: %s, user_id:%v]. Error: %w", remigrated.LowerName, remigrated.UserID, err)
 					}
+					if !has {
+						_, err = sess.Insert(remigrated)
+						if err != nil {
+							return fmt.Errorf("unable to (re)insert webauthn_credential[%d]. Error: %w", reg.ID, err)
+						}
 
-					continue
+						continue
+					}
 				}
 
 				_, err = sess.ID(remigrated.ID).AllCols().Update(remigrated)