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

MySQL Discussion :

changer un champ varchar en text d'une table


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Par défaut changer un champ varchar en text d'une table
    Bonjour,
    J'ai dans ma table un champ 'varchar' qui est limité à 255 caractères, c'est trop court pour certains articles.
    Je souhaite modifier ce champ et le passer en blob.
    Comment dois-je procéder ?
    Merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Si tu as phpMyAdmin tu dois pouvoir éditer les champs de ta table dans l'onglet "Structure".

    Sinon, essaie une commande du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ta_table CHANGE ton_champ ton_champ TEXT;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Par défaut ALTER TABLE ta_table CHANGE ton_champ ton_champ TEXT;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER table_X CHANGE champ_X TEXT;
    Je viens de faire ça, et voilà ce que MySQL répond :
    MySQL a répondu:
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    Question subsidiaire:
    Pourquoi mettre TEXT et pas BLOB...?

  4. #4
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Tu fais erreur dans ton instruction. Il faut mettre que ta ligne soit constituée de "ALTER TABLE", puis le nom de ta table, puis "CHANGE", puis deux fois le nom de ton champ puis le type que tu veux lui mettre. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ta_table CHANGE ton_champ ton_champ TEXT;
    La différence entre BLOB et TEXT, comme expliquée ici (deuxième paragraphe), est une question de sensibilité aux minuscules/majuscules.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Par défaut CHANGE TEXT
    Citation Envoyé par flo.87 Voir le message
    Tu fais erreur dans ton instruction. Il faut mettre que ta ligne soit constituée de "ALTER TABLE", puis le nom de ta table, puis "CHANGE", puis deux fois le nom de ton champ puis le type que tu veux lui mettre. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ta_table CHANGE ton_champ ton_champ TEXT;
    La différence entre BLOB et TEXT, comme expliquée ici (deuxième paragraphe), est une question de sensibilité aux minuscules/majuscules.
    Je viens de faire ce qui est indiqué, voici la réponse de MySQL:
    MySQL a réponduocumentation
    #1170 - BLOB column 'X' used in key specification without a key length

    Qu'est-ce que cette key lenght vient faire ici ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    ça veut dire que ta colonne est utilisée dans une clef... c'est possible avec un TEXT ou un BLOB, mais seulement à condition de préciser le nb de caractères à prendre en compte.

    Dans tous les cas, il est parfaitement inutile de passer au TEXT. Le VARCHAR peut aller jusqu'à 65535 caractères... Dons par exemple, pour passer à 500 caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ta_table CHANGE ton_champ ton_champ VARCHAR(500)
    ou plus classiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ta_table MODIFY ton_champ VARCHAR(500)
    Juste pour expliquer la différence de syntaxe : CHANGE est surtout utilisé pour renommer la colonne, d'où le fait qu'on mette deux fois le nom.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Par défaut BLOB au lieu de VARCHAR
    J'ai fait cette requête, et voici :
    MySQL a répondu:
    #1074 - Too big column length for column 'X' (max = 255). Use BLOB instead

    Donc, j'ai refait la requête avec blob au lieu de varchar, résultat :
    #1170 - BLOB column 'X' used in key specification without a key length

    Nouvel essai après modification :
    ALTER TABLE Y MODIFY champX BLOB (500);
    réponse:
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(500)' at line 1

    Merci pour vos réponses

Discussions similaires

  1. Initialisation des champs "sujet" et "texte" d'une E-Mail
    Par j.p.mignot dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 29/12/2007, 15h40
  2. Importer un fichier texte dans une table avec champ Memo
    Par Steph4fun dans le forum Paradox
    Réponses: 12
    Dernier message: 25/11/2007, 23h10
  3. Réponses: 3
    Dernier message: 14/09/2007, 06h30
  4. transformer champ texte d'une table vers champ date
    Par mussara dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2007, 22h17
  5. Réponses: 5
    Dernier message: 15/09/2006, 16h13

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