web-dev-qa-db-fra.com

# 1062 - Entrée en double pour la clé 'PRIMARY'

Donc ma base de données MySQL se comporte un peu bizarrement. Voici ma table:

Name shares id  price   indvprc
cat   2     4   81      0
goog  4     4   20      20
fb    4     9   20      20

J'obtiens cette erreur # 1062 lorsque j'essaye de l'insérer dans le tableau. Je l'ai donc examiné plus en détail et j'ai réalisé que lorsque j'essayais d'insérer des valeurs dans la table, dans lesquelles le nom et les valeurs de partage étaient identiques, cela renverrait l'erreur # 1062. Par exemple, si j'ai inséré:

fb    4      6     20   20 

Cela retournerait une erreur. Mais si je changeais le nombre d'actions en 6, cela fonctionnerait bien. Est-ce à cause d'une de mes colonnes qui pourrait être unique, ou est-ce juste quelque chose avec mysql?

14
irosenb

Vous devez supprimer shares en tant que votre PRIMARY KEY OR UNIQUE_KEY

13
mlishn

Utilisation SHOW CREATE TABLE your-table-name pour voir quelle colonne est votre clé primaire.

7
Majid Fouladpour
  1. Assure-toi PRIMARY KEY a été choisi AUTO_INCREMENT.
  2. Activez simplement l'incrémentation automatique en:
    ALTER TABLE [table name] AUTO_INCREMENT = 1
  3. Lorsque vous exécutez la commande d'insertion, vous devez ignorer cette clé.
7

Je l'ai résolu en changeant la propriété "lock" de "shared" en "exclusive":

ALTER TABLE `table` 
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;
3

Quel est le message d'erreur exact? # 1062 signifie une entrée en double violant une contrainte de clé primaire pour une colonne - ce qui revient au point que vous ne pouvez pas avoir deux des mêmes valeurs dans la colonne. Le message d'erreur devrait vous indiquer laquelle de vos colonnes est contrainte, je suppose que "partages".

2
Chris

Ce n'est probablement pas la meilleure solution, mais ce qui suit résoudra le problème

Étape 1: effectuer un vidage de la base de données à l'aide de la commande suivante

mysqldump -u root -p databaseName > databaseName.db

trouver la ligne

ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;

Étape 2: modifiez ******* au max id de votre id de table mysql. Enregistrez cette valeur.

Étape 3: utilisez à nouveau

mysql -u root -p databaseName < databaseName.db

Dans mon cas, j'ai eu cette erreur lorsque j'ai ajouté une entrée manuelle à utiliser pour entrer des données dans un autre tableau. certains comment nous devons définir la valeur AUTO_INCREMENT à max id en utilisant la commande mysql

1
Kshitiz

Réparez la base de données par votre fournisseur de domaine cpanel.

Ou voyez si vous n'avez pas fusionné quelque chose dans le phpMyAdmin

0
Guy