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 pourvotre aide
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 pourvotre aide
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;
Je viens de faire ça, et voilà ce que MySQL répond :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER table_X CHANGE champ_X TEXT;
MySQL a répondu:
Question subsidiaire:#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
Pourquoi mettre TEXT et pas BLOB...?
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 :
La différence entre BLOB et TEXT, comme expliquée ici (deuxième paragraphe), est une question de sensibilité aux minuscules/majuscules.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE ta_table CHANGE ton_champ ton_champ TEXT;
ç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 :
ou plus classiquement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE ta_table CHANGE ton_champ 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE ta_table MODIFY ton_champ VARCHAR(500)
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
Partager