2013-05-07 5 views
0

déjà Peuplé J'ai une table avec divers domaines, y compris une clé primaire, id, qui est auto-incrémentée:Insertion de nouveaux éléments dans un tableau

+-------------------------------+------------------+------+-----+---------+ 
| Field       | Type    | Null | Key | Default | Extra 
+-------------------------------+------------------+------+-----+---------+ 
| id        | tinyint(11)  | NO | PRI | NULL | auto_increment 

Le tableau est déjà rempli avec 114 articles:

mysql> select count(*) as cnt from beer; 
+-----+ 
| cnt | 
+-----+ 
| 114 | 
+-----+ 

Et j'essaye d'insérer un groupe de nouveaux articles dans la table. Je n'insère pas explicitement une clé d'identification. Voici une exemple de requête:

mysql> INSERT INTO beer (name, type, alcohol_by_volume, description, image_url) 
    VALUES('Test Ale', 1, '4.6', '', 'https://untappd.s3.amazonaws.com/site/assets/images/temp/badge-beer-default.png'); 

Je reçois l'erreur suivante lorsque vous tentez d'insérer manuellement cette requête (l'insertion est réellement fait avec un script PHP pour les mêmes résultats):

ERROR 1062 (23000): Duplicate entry '127' for key 1 

Qu'est-ce qui se passe ? Je pensais que l'identifiant augmenterait automatiquement lors de l'insertion. Je devrais noter que les 13 premières entrées sont vides/null pour une raison quelconque, et la dernière clé est actuellement 127. (ce n'est pas ma table - je suis en train d'écrire le script).

+0

probablement quelqu'un a changé la valeur du autoincrement ('ALTER TABLE nom_table AUTO_INCREMENT = 127;' – jcho360

Répondre

4

Tiny int n'est pas le bon choix pour la clé primaire auto_increment ... La plage est juste (-128 ... 127). Normalement, il est utilisé comme un drapeau; vous devez utiliser unsigned int

1

Essayez de réinitialiser l'incrément automatique de clé primaire manuellement ceci:

ALTER TABLE `beer` AUTO_INCREMENT = 128; 
Questions connexes