Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 23/06/2011, 11h39   #1
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 0
Points : 0
Par défaut Mise à zero auto_increment

Bonjour j'ai un problème avec la mise à zéro de mon auto increment.

Après quelques recherches sur internet j'ai essayé par la requête :

Code :
ALTER TABLE la_table AUTO_INCREMENT=0
Ma requête s'effectue correctement mais la remise à zéro ne s'effectue pas.

Puis j'ai essayé avec
Code :
OPTIMIZE TABLE la_table
là encore rien ne se passe malgré la requête correctement effectuée

Enfin j'ai trouvé également ceci :
Code :
DBCC CHECKIDENT (la_table, RESEED, 0)
J'ai une erreur de syntaxe.

Finalement j'ai essayé de passer par l'onglet "opération" afin de mettre l'auto_increment à 0 manuellement. L'opération s'effectue avec succès, or rien ne se passe.

Quelqu'un aurait une solution à mon problème svp ?

J'utilise Mysql Version du serveur: 5.1.54
Type InnoDB
Exuna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 12h12   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
ALTER TABLE
Citation:
To change the value of the AUTO_INCREMENT counter to be used for new rows, do this:

Code :
ALTER TABLE t2 AUTO_INCREMENT = value;
You cannot reset the counter to a value less than or equal to any that have already been used. For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one. For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.
Donc je pense que le seul moyen est de vider la table...
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 13h42   #3
Membre habitué
 
Avatar de rinuom99
 
Étudiant
Inscription : août 2007
Messages : 238
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 238
Points : 125
Points : 125
Envoyer un message via MSN à rinuom99
essayer avec
Code :
ALTER TABLE tablename AUTO_INCREMENT = 1
en principe ça fonctionne
rinuom99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 14h02   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Citation:
Envoyé par rinuom99 Voir le message
en principe ça fonctionne
Citation:
For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.
Donc en principe ça ne fonctionne pas

Plutôt que de vider la table tu dois pouvoir faire :
Code :
UPDATE la_table SET la_col = -la_col
Mais bon si la colonne en question est une PK... ça n'est probablement pas une bonne idée.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 14h13   #5
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 0
Points : 0
Merci pour vos réponses.
Effectivement
Code :
ALTER TABLE tablename AUTO_INCREMENT = 1
Ne marche pas

Citation:
Mais bon si la colonne en question est une PK... ça n'est probablement pas une bonne idée.
Oui c'est une PK. Je pense que je vais changer le type InnoDB en MyIsam ou bien, tant pis, laisser comme ça ^^
Exuna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 15h02   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
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 530
Points : 3 523
Points : 3 523
Saluton,
En fait, on y vient, et, la bonne question c'est :
Pourquoi vouloir modifier la valeur de l'AUTO_INCREMENT d'une table ?
__________________
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
Vieux 23/06/2011, 16h21   #7
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Citation:
Envoyé par Exuna Voir le message
Je pense que je vais changer le type InnoDB en MyIsam
Ca ne changera rien :
Citation:
For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one.
Quel est le but de cette réinitialisation ?
Citation:
Envoyé par Exuna Voir le message
ou bien, tant pis, laisser comme ça ^^
Oui ça m'a l'air d'être la meilleure solution ^^
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 09h54   #8
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par Maljuna Kris Voir le message
En fait, on y vient, et, la bonne question c'est :
Pourquoi vouloir modifier la valeur de l'AUTO_INCREMENT d'une table ?
Car j'ai une table PAIEMENT sur laquelle j'effectue des enregistrements ainsi que des delete. Sachant que j'ai environ 10 - 20 delete par jours et 40 - 50 enregistrements par jours.
Exuna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 10h04   #9
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
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 530
Points : 3 523
Points : 3 523
Et alors ?
Tu crains de manquer d'identifiants ?
Augmente la taille de la colonne.
__________________
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
Vieux 24/06/2011, 10h23   #10
Invité de passage
 
Inscription : juin 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 4
Points : 0
Points : 0
Non je souhaite juste faire un peu plus d'ordre dans ma table.
Exuna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 11h00   #11
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
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 530
Points : 3 523
Points : 3 523
Sans commentaire.
__________________
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
Vieux 26/06/2011, 22h25   #12
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
C'est toujours dans le forum MySQL que je trouve de quoi rigoler un grand coup !!!!

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 22h49   #13
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
10 - 20 delete par jours et 40 - 50 enregistrements par jours.
wow 1500 lignes/mois!

C'est vrai qu'à ce train-là, vous n'avez que quelques centaines d'années avant d'outrepasser les capacité d'un INT!

Bon on vous charrie, plus sérieusement ne touchez à rien..
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 10h39   #14
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
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 : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Pour expliquer un peu plus pourquoi vous faites rigoler les experts...

Un identifiant auto-incrémenté n'a aucune signification pour l'utilisateur du logiciel qui interroge la BDD et cette valeur ne lui est en principe jamais présentée. Ça ne sert qu'à la salade interne du SGBD et notamment pour référencer les clés étrangères dans les autres tables associées.

Bref, on se fout qu'il y ait des trous dans la série à cause des DELETE ! Un identifiant doit être invariable !

À lire sur les clés auto-incrémentées.

La seule utilité de la remise à zéro de l'auto-incrément, c'est quand on a fait des tests et qu'on veut donner une base vide et propre quand on passe en production. On vide d'abord la table puis on remet l'auto-incrément à zéro mais en production, on n'y touche jamais !
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h53.


 
 
 
 
Partenaires

Hébergement Web