Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2010, 20h14   #1
Invité de passage
 
Inscription : octobre 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 53
Points : 4
Points : 4
Par défaut faire commencer l'AUTO INCREMENT à 0

Bonjour !

J'ai besoin, pour un projet, d'importer des données dans une table. Chaque entrée à un ID que je dois mettre dans le champ ID de ma table. Ce champ doit être auto incrémenter pour permettre des ajouts ultérieurs.

Mon problème, c'est que les données commencent à 0 mais mon auto incrément commence à 1 !

J'ai essayé de modifier directement le sql
Code :
1
2
3
4
5
6
 
CREATE TABLE ``.``
(
 
  ) 
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Mais ça commence toujours à 1. (J'ai essayé de modifier la même option depuis phpmyadmin, l'auto incrément se remet toujours à 1 !)


Est-ce possible de le faire démarrer à 0 ? Si oui, comment ?



Merci
pazze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 22h01   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
1/ en quoi ça te gène? c'est une clé artificielle, elle ne doit pas avoir de sens intrinsèque.
2/
Code :
1
2
 
UPDATE matable SET colonne_autoincrement = colonne_autoincrement - 1;
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h43   #3
Invité de passage
 
Inscription : octobre 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 53
Points : 4
Points : 4
Ben les données sont déjà fournies avec un id. La première entrée commence à 0. ( Il y a déjà des relations établies sur base de cet id, et donc de l'id=0 ...)

Merci pour ta solution, je vais voir si je n'ai pas d'incohérence dans mes données
pazze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h50   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 163
Points : 18 163
Envoyer un message via MSN à CinePhil
Tu peux aussi ne pas déclarer l'AUTO_INCREMENT sur la colonne tout de suite, insérer tes données puis mettre l'auto-incrémentation en route pour les futures données.
Vérifier quand même s'il ne rechange pas tous les id par cette dernière opération mais je pense que non.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 12h46   #5
Invité de passage
 
Inscription : octobre 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 53
Points : 4
Points : 4
Je suis parvenu à obtenir ce que je voulais avec la méthode de gene69 mais le problème, c'est que pour y parvenir je dois laisser tomber l'id qu'on me donne. (Je repars de 0 comme s'il n'y en avait pas de prédéfini). Ce n'est pas une application personnelle mais un projet noté, donc je dois être assez rigoureux

Pour la méthode de CinePhil, j'ai essayé un
Code :
1
2
3
ALTER TABLE `table` CHANGE `ID` `ID` INT( 11 ) UNSIGNED NOT NULL;
puis un
ALTER TABLE `table` CHANGE `ID` `ID` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT;
Mais ça me renvoie une erreur, ça doit venir des clés étrangères....(erreur 1025, impossible de renommer, un truc du genre)



Pour résumer, ma base est déjà créée, j'ai mes données en format .csv, j'ai un script de parsing en c++. Le seul problème c'est que ces données commencent avec l'id 0 et que l'auto_incrément commence à 1....
pazze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h18   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 528
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 528
Points : 3 519
Points : 3 519
Saluton,
Citation:
Envoyé par Extrait de la doc
InnoDB ne supporte pas l'option de configuration initale des colonnes AUTO_INCREMENT dans les commandes CREATE TABLE ou ALTER TABLE. Pour configurer cette valeur avec une table InnoDB, insérez une ligne avec une valeur inférieure d'une unité à votre valeur de départ, ou bien insérez la première ligne en spécifiant la première valeur.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h27.


 
 
 
 
Partenaires

Hébergement Web