2017-06-22 1 views
2

J'ai un problème avec la table mysql alors que j'essaie d'insérer des valeurs dans la base de données.# 1062 - Dupliquer l'entrée '0' pour la clé 'PRIMARY'

J'ai suivi ce tutoriel

http://sqllessons.com/categories.html

et table créée comme la table de tutoriel

Code de la table

create table categories 
(id  integer  not null primary key 
, name  varchar(37) not null 
, parentid integer  null 
, foreign key parentid_fk (parentid) 
     references categories (id) 
); 

erreur requête SQL: Modifier Modifier

INSERT INTO `mydb`.`categories` (
`id` , 
`name` , 
`parentid` 
) 
VALUES (
'', 'groceries', NULL 
), (
'', 'snacks', NULL 
) 

MySQL said: Documentation 
#1062 - Duplicate entry '0' for key 'PRIMARY' 

Aidez-moi à résoudre ce problème.

Répondre

6

Déclarer la valeur à incrémenter automatiquement et ne pas l'insérer. Alors:

create table categories (
    id  integer  not null auto_increment primary key, 
    name  varchar(37) not null, 
    parentid integer  null, 
    foreign key parentid_fk (parentid) references categories (id) 
); 

Et puis:

INSERT INTO `mydb`.`categories` (`name`, `parentid`) 
    VALUES ('groceries', NULL), 
      ('snacks', NULL); 
+0

J'ai commenté la réponse de tout le monde donc je me sens un peu mal de ne pas commenter le vôtre aussi: Cette réponse frappe le clou sur la tête ':-)' – Martin

+0

Cela fonctionne parfaitement. Merci beaucoup M. Linoff. –

0

Vous souhaitez insérer une valeur vide (0) deux fois au champ, que vous avez dit est la clé primaire. La clé primaire de la définition n'a pas de doublon.

+0

s'il vous plaît corriger votre formulation et votre grammaire. – Martin

0

Vous devez spécifier la clé primaire comme AUTO_INCREMENT et pas besoin d'insérer la valeur pour « id » dans la requête

+0

cela ne résout pas en soi le problème [la réponse éditée corrige ce problème] – Martin

0

Chaque clé primaire doit être unique. Vous avez inséré 2 lignes avec la clé primaire '0'. Au lieu de '' vous devriez insérer un ID.

Éditer: Sry mon mauvais, ID pas Index.

+0

s'il vous plaît corriger votre formulation et l'orthographe – Martin

+0

insérer un index? Pouvez-vous expliquer de quoi vous parlez ici? – Martin