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

PHP & Base de données Discussion :

problème d'ajout d'un champ [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Par défaut problème d'ajout d'un champ
    salut
    j'ai un serieux probleme à ajouter une nouvelle ligne dans ma table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ALTER TABLE `test` ADD `ID` ENUM( 'ABC' ) DEFAULT '000' NOT NULL AUTO_INCREMENT
    et MySql me donne l'erreur suivante
    MySQL said: Documentation
    #1067 - Valeur par défaut invalide pour 'ID'
    c'est quoi exactement le probleme ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il n'y a rien qui vous choque sur cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENUM( 'ABC' ) DEFAULT '000'
    enum('abc') : valeur 'abc' ou vide
    default '000' : '000' ne fait pas partie des valeurs acceptés par le champ enum

    En savoir plus sur le type ENUM

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Par défaut
    je ne pense pas que j'ai bien saisie ,puisque j'ai donnée une valeur non null pour la valeur par défaut masi j'ai toujours la même erreur .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER TABLE `annonce` ADD `ID` ENUM( 'ABC' ) DEFAULT '1' NOT NULL AUTO_INCREMENT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     MySQL said: Documentation
    #1067 - Valeur par défaut invalide pour 'ID'

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Un champ enum défini une liste de valeurs finie, connue, limitée. Chaque enregistrement de votre table ne pourra correspondra qu'à l'une d'entre elles et votre valeur par défaut doit être l'une de ses valeurs. En interne, le SGBD fait l'association du bit à 1 suivant sa position (données binaires) avec sa valeur correspondante (0100 = 2e des 4 valeurs de l'ensemble par exemple, 'b' pour un enum('a', 'b', 'c', 'd')).

    Soit enum('célibataire', 'marié', 'pacsé') default 'célibataire' :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO personnes VALUES('A', 'X', 'célibataire'); -- OK
    INSERT INTO personnes VALUES('B', 'Y', 'voeuf'); -- KO : 'voeuf' n'est pas connu dans l'énumération
    INSERT INTO personnes VALUES('C', 'Z'); -- OK : utilisation de la valeur par défaut 'célibataire'

    Par ailleurs, la propriété auto_increment est réservée aux champs numériques. Elle n'a aucun sens sur les autres types de champ.

    Le type SET, quant à lui, permet de sélectionner plusieurs valeurs dans cet ensemble et fonctionne de manière similaire.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Par défaut
    pour mon cas je veut juste utiliser ENUM pour incrementer le numero des enregistrement (type numerique)
    j'ai fais comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER TABLE `annonce` CHANGE `ID` `ID` ENUM( 'a', 'ab', 'abc' ) DEFAULT 'a' NOT NULL
    et sa a marcher,mais il mis au champs ID la valeur 'a' pour la premiere enregistrement et il n'increment pas(parce que je n'est ajouter l'aption AUTO_INCREMENT.
    mais quand j'ai changer comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER TABLE `annonce` CHANGE `ID` `ID` ENUM( 'a', 'ab', 'abc' ) DEFAULT '1' NOT NULL AUTO_INCREMENT
    sa n'a pas marcher???
    j'aimerais bien que quelqu'un m'explique ou je plente ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous vous plantez visiblement de type de champ : seuls les champs numériques, comme je vous l'ai déjà signalé, ([TINY|SMALL|BIG]INT) peuvent avoir la propriété auto_increment. En outre, vous ne ferez pas un compteur avec une énumération. Consultez la documentation pour plus d'informations (chapitre 11 notamment) ou encore effectuez ces opérations avec des outils tel phpMyAdmin.

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

Discussions similaires

  1. [AC-2010] Problème pour ajouter un champ
    Par valoche2003 dans le forum IHM
    Réponses: 36
    Dernier message: 25/08/2014, 12h41
  2. [AC-2003] Problème avec l'ajout d'un champ à une table qui résulte d'une requête
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/03/2014, 19h12
  3. Problème pour poster les données dans la base suite à ajout d'un champ
    Par What dans le forum Connexion aux bases de données
    Réponses: 12
    Dernier message: 21/01/2010, 23h12
  4. Réponses: 6
    Dernier message: 10/04/2007, 23h50
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

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