Bizarre, mais ça ne me surprend pas plus que ça (MySQL gérant des tables dans plusieurs charsets, il doit devoir utiliser des tricks pour s'en sortir dans certains cas).
Si tu avais travaillé dans la fonction publique, voici la méthode que tu aurais dû utiliser (
) :
On supprime de la structure de la table toute notion de clé (quitte à créer un auto incrément pour l'occasion), on insère toutes les valeurs dans l'urgence parce qu'il faut bien, puis on regarde ce qu'on peut faire (en définitive, on hardcodera un truc dans les scripts pour retomber sur ses pattes, quitte à écrire une fonction get_old_key($new_key).
Une autre méthode aurait été de faire une clé sur deux champs, avec "test" qui peut prendre "rôle" ou "role" et le champ superkey qui s'incrémente quand tu as deux clés différentes sur un test de chaînes mais équivalentes pour MySQL (mais ça implique de faire passer toutes tes opérations SQL par un script créé pour l'occasion).
Cela dit, je doute que ces méthodes te satisfassent 