Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 30/01/2012, 16h08   #1
Membre actif
 
Avatar de Tanebisse
 
Homme
Ingénieur développement logiciels
Inscription : février 2007
Messages : 371
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2007
Messages : 371
Points : 163
Points : 163
Par défaut modification de l'encodage d'une colonne FOREIGN KEY ou PRIMARY KEY

Bonjour,
Je tente de modifier l'encodage d'une colonne MySQL avec la requête suivante :
Code :
ALTER TABLE HABILITATIONS  MODIFY  ID_UTILISATEUR varchar(20)  CHARACTER SET utf8 COLLATE utf8_unicode_ci   ;
Mais la colonne ID_UTILISATEUR est une clé étrangère de la colonne IDENTIFIANT de la table UTILISATEUR.
J'ai bien tenté de faire l'ALTER sur cette table en premier avec la requête suivante :
Code :
ALTER TABLE UTILISATEUR  MODIFY  IDENTIFIANT varchar(20)  CHARACTER SET utf8 COLLATE utf8_unicode_ci   ;
mais j'ai toujours l'erreur suivante :
Code :
/* SQL Error (1025): Error on rename of './#sql-1da5_29e3' to './HABILITATIONS' (errno: 150)Foreign key constraint is incorrectly formed */
Je précise que je ne souhaite pas supprimer la contrainte si c'est possible.
Tanebisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h59   #2
Nouveau Membre du Club
 
Avatar de FF_enec
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 43
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 43
Points : 34
Points : 34
Salut,

Si tu supprimes la FOREIGN KEY entre les deux tables et que tu changes le format de t'es colonnes après ?
FF_enec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h29   #3
Membre actif
 
Avatar de Tanebisse
 
Homme
Ingénieur développement logiciels
Inscription : février 2007
Messages : 371
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2007
Messages : 371
Points : 163
Points : 163
Citation:
Envoyé par FF_enec Voir le message
Salut,

Si tu supprimes la FOREIGN KEY entre les deux tables et que tu changes le format de t'es colonnes après ?
Justement comme je le précisais dans la dernière phrase de mon message je ne souhaite pas supprimer la contrainte !
Tanebisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h59   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Déjà une clé primaire de type VARCHAR(20) est une mauvaise clé primaire !
Si tu avais directement utilisé un type INTEGER, tu n'aurais pas eu de souci avant d'arriver à plus de 2 milliards de lignes.

Ce que te suggérait FF_enec était de supprimer la contrainte, modifier le type des colonnes dans les deux tables puis de remettre la contrainte de clé étrangère.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h03   #5
Membre actif
 
Avatar de Tanebisse
 
Homme
Ingénieur développement logiciels
Inscription : février 2007
Messages : 371
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2007
Messages : 371
Points : 163
Points : 163
Effectivement si c'est moi qui avait créé cette table c'est ce que j'aurai fait mais ce n'est pas le cas. Et j'avais bien compris la proposition de Fennec, mais je voulais l'éviter. C'est finalement cette option que j'ai tout de même choisie.
Cordialement.
Tanebisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h56.


 
 
 
 
Partenaires

Hébergement Web