php - Erreur 1062 : entrée en double '4294967295' pour la clé 'PRIMARY'
漂亮男人2017-06-17 09:15:21
0
3
1076
Les données dans ma base de données ne contiennent que des centaines de milliers d'entrées. La clé primaire est int 11. Ensuite, j'ai pu l'insérer avant, mais maintenant j'obtiendrai cette erreur Veuillez répondre
La taille finale de la valeur stockée dans int(11) et int(3) est la même. Le 3 et le 11 sont la longueur du nombre lorsqu'il est affiché sur le terminal et n'ont rien à voir avec la taille et la longueur de. le numéro enregistré
Avec 110 000 données, votre clé primaire ne doit pas être la taille du pas plus 1, sinon votre identifiant ne peut pas commencer par incrémenter 0.
La personne ci-dessus a expliqué clairement la raison, en disant que la valeur de la clé primaire est dupliquée. Ensuite, allez dans la base de données pour trouver cet enregistrement d'abord, puis regardez les données de plus de 100 000, pourquoi la clé primaire est 4294967295
.
2 à la puissance 32 = 4294967296 (non signé), signé puis divisé par 2, il y a un nombre négatif de plus que le nombre positif, -2147483648~+2147483647 type int non signé 4294967296 valeur maximale
Il s'agit d'une clé en double, essayez ceci, son fonctionnement n'est pas garanti... étape 1 : sélectionnez max (votre champ de clé_primaire) dans votre_nom_de_table ; étape 2 : ALTER TABLE votre_nom_de_table AUTO_INCREMENT = value_u_got_from_step1 + 1 ;
L'incrémentation automatique de l'identifiant a atteint la limite supérieure. Si vous insérez à nouveau des données, vous ne pouvez insérer que cette valeur d'identifiant, il y aura donc un conflit. Changez-la simplement en type bigint. Des centaines de milliers de données s'incrémenteront automatiquement. cette valeur. Vous devez vérifier vos règles d'auto-incrémentation et votre logique métier, sinon la limite sera atteinte très rapidement à votre vitesse
Clarifions d’abord quelques concepts
La taille finale de la valeur stockée dans int(11) et int(3) est la même. Le 3 et le 11 sont la longueur du nombre lorsqu'il est affiché sur le terminal et n'ont rien à voir avec la taille et la longueur de. le numéro enregistré
Avec 110 000 données, votre clé primaire ne doit pas être la taille du pas plus 1, sinon votre identifiant ne peut pas commencer par incrémenter 0.
La personne ci-dessus a expliqué clairement la raison, en disant que la valeur de la clé primaire est dupliquée. Ensuite, allez dans la base de données pour trouver cet enregistrement d'abord, puis regardez les données de plus de 100 000, pourquoi la clé primaire est 4294967295
2 à la puissance 32 = 4294967296 (non signé), signé puis divisé par 2, il y a un nombre négatif de plus que le nombre positif, -2147483648~+2147483647 type int non signé 4294967296 valeur maximale
Il s'agit d'une clé en double, essayez ceci, son fonctionnement n'est pas garanti...
étape 1 : sélectionnez max (votre champ de clé_primaire) dans votre_nom_de_table ;
étape 2 : ALTER TABLE votre_nom_de_table AUTO_INCREMENT = value_u_got_from_step1 + 1 ;
L'incrémentation automatique de l'identifiant a atteint la limite supérieure. Si vous insérez à nouveau des données, vous ne pouvez insérer que cette valeur d'identifiant, il y aura donc un conflit. Changez-la simplement en type bigint. Des centaines de milliers de données s'incrémenteront automatiquement. cette valeur. Vous devez vérifier vos règles d'auto-incrémentation et votre logique métier, sinon la limite sera atteinte très rapidement à votre vitesse
.