IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Modifier AUTO_INCREMENT d'une table MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut Modifier AUTO_INCREMENT d'une table MySQL
    Bonjour,
    Le code suivant génère une erreur, connaissez-vous l'origine du problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE maTable AUTO_INCREMENT=20;
     
    Erreur MySQL:
    #1067 - Valeur par défaut invalide pour 'created'

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 995
    Billets dans le blog
    6
    Par défaut
    La valeur de la graine doit toujours être égale ou supérieure à la valeur courante.... est-ce bien le cas ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    La valeur de la graine doit toujours être égale ou supérieure à la valeur courante.... est-ce bien le cas ?
    A +
    Bonjour SQLpro,
    La valeur actuelle de l'id est 17, donc ma nouvelle valeur est supérieure ! Quid de l'erreur.

    Mais mon besoin est le suivant:
    La table comporte des données dont les id sont compris entre 1 et 1000
    Un ajout de données utilisera les id 20000 à 29999

    Je souhaite ultérieurement reprendre l'incrémentation à 1001 (jusqu'à 19999)
    Est-ce possible ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour,
    J'ai effectué quelques tests supplémentaires.
    Sur une autre table, la modification de l'incrémentation fonctionne (et la nouvelle valeur doit être supérieure à l' id maxi)

    Les lignes ci-dessous concernent la table qui génère l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE maTable (
      `id` int(10) UNSIGNED NOT NULL,
    ...
    ALTER TABLE maTable 
      ADD PRIMARY KEY (`id`),
    ...
    ALTER TABLE maTable
      MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18
    J'ai une clé étrangère sur une autre colonne que l'id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET FOREIGN_KEY_CHECKS = 0;
    ALTER TABLE maTable AUTO_INCREMENT=20;
    La désactivation n’empêche pas le message d'erreur

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 589
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Communiquez le DDL complet de création de la table qui pose problème (CREATE TABLE et tous les éventuels ALTER TABLE qui suivent)
    Si la colonne qui pose souci référence une colonne d'une autre table, alors il ne faut pas déclarer d'auto_incrément, mais récupérer la valeur précédemment insérée dans la table référencée grâce à la fonction LAST_INSERT_ID()

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour escartefigue,
    J'ai modifié le processus depuis le début de la semaine. Merci pour cette réponse, je conserve cette solution pour un futur code.
    Bon WE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] modifier les enregistrement d'une table mysql par un formulaire
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/05/2007, 11h09
  2. Réponses: 4
    Dernier message: 07/08/2006, 16h19
  3. Réponses: 2
    Dernier message: 07/08/2006, 11h51
  4. Réponses: 12
    Dernier message: 19/06/2006, 16h26
  5. Modifier une table MySQL via un lien
    Par Hayabusa dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/02/2006, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo