Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 29/06/2005, 11h47   #1
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Par défaut Type de colonne : Les char deviennent des VarChar !?

J'ai un problème bizzare avec mes colonnes (tables de type InnoDB MySQL 4.1.10 a).


Citation:
[P1]
mysql> describe utilisateurs;
+--------------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+------------------+------+-----+---------+----------------+

| ID | int(10) unsigned | | PRI | NULL | auto_increment |

| UserFullName | char(45) | | | | |

+--------------+------------------+------+-----+---------+----------------+

2 rows in set (0.01 sec)

[P2]
mysql> describe utilisateurs;
+---------------+------------------+------+-----+---------+----------------
+
| Field | Type | Null | Key | Default | Extra
|
+---------------+------------------+------+-----+---------+----------------
+
| ID | int(10) unsigned | | PRI | NULL | auto_increment
|
| UserFullName | varchar(45) | | | |
|
| UserLoginName | varchar(25) | | | |
|
| UserPassword | varchar(25) | | | |
|
| UserPhone | varchar(25) | | | |
|
| UserAdress | text | | | |
|
+---------------+------------------+------+-----+---------+----------------
+
6 rows in set (0.00 sec)

[P3]
mysql> describe utilisateurs;
+--------------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+------------------+------+-----+---------+----------------+

| ID | int(10) unsigned | | PRI | NULL | auto_increment |

| UserFullName | char(45) | | | | |

+--------------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)


[P4]
mysql> describe utilisateurs;
+--------------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+------------------+------+-----+---------+----------------+

| ID | int(10) unsigned | | PRI | NULL | auto_increment |

| UserFullName | varchar(45) | | | | |

+--------------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

[P5]
mysql> alter table utilisateurs modify column UserFullName char(45);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> describe utilisateurs;
+--------------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+------------------+------+-----+---------+----------------+

| ID | int(10) unsigned | | PRI | NULL | auto_increment |

| UserFullName | varchar(45) | YES | | NULL | |

+--------------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

[P6]
mysql> alter table utilisateurs modify column UserFullName char(65);
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

[P7]
mysql> describe utilisateurs;
+--------------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------------+------------------+------+-----+---------+----------------+

| ID | int(10) unsigned | | PRI | NULL | auto_increment |

| UserFullName | varchar(65) | YES | | NULL | |

+--------------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

mysql>
P1/ Je crée une table simple, deux colonnes dont une de type Char(45).
P2/ A l'aide de l'administrateur MySQL, j'augmente d'autres champs mais tout curieusement la première colonne de type Char(45) devient de type Varchar(45)
P3/ Encore à l'aide de l'outil d'administrattion, j'efface les colonnes que j'ai ajoutées et je remets la seconde colonne à son type original à savoir Char(45)

Ce fontionnement est-il normal ? Pourquoi les char deviennent des Varchar ???

Est-il impossible de changer le type d'une colonne Varchar en Char (voir étape P4 à P7 ?

Merci pour vos suggestions.
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2005, 12h35   #2
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Citation:
Ce fontionnement est-il normal ? Pourquoi les char deviennent des Varchar ???

Est-il impossible de changer le type d'une colonne Varchar en Char (voir étape P4 à P7 ?
Pour les versions antérieures à la 5.0.3

J'ai regardé dans la documentation en ligne et j'ai trouvé ceci :
Citation:
VARCHAR columns with a length less than four are changed to CHAR.

If any column in a table has a variable length, the entire row becomes variable-length as a result. Therefore, if a table contains any variable-length columns (VARCHAR, TEXT, or BLOB), all CHAR columns longer than three characters are changed to VARCHAR columns. This doesn't affect how you use the columns in any way; in MySQL, VARCHAR is just a different way to store characters. MySQL performs this conversion because it saves space and makes table operations faster.
Je crois que cà répond aux questions
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2005, 13h21   #3
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
J'enlève [Délestage], ça peut être utile dans le futur
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h34.


 
 
 
 
Partenaires

Hébergement Web