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 Interclassement


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Changer Interclassement
    Bonjour,

    Mon hébergeur (j'ai déjà envoyé plein de messages) a fait des changements et depuis dans la colonne interclassement il y a par défaut 'latin1_swedish_ci'. Il m'est alors impossible d'exécuter des requêtes du style:

    select * from `table` where champ like '%mot%' ou
    select * from `table` where champ='mot'

    sachant que champ est un varchar(255)!

    J'obtiens alors l'erreur

    #1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

    Alors je me suis dit qu'il fallait affecté l'interclassement de toutes mes tables avec la valeur "utf8_general_ci". J'ai utilisé le script suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //connexion etc..
     
    $nbtab = mysql_list_tables ($DB,$db_link); 
    while ($i < mysql_num_rows ($nbtab)){
     
    	$table = mysql_tablename ($nbtab, $i);
    	$req=mysql_db_query($DB,"ALTER TABLE ".$table." DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci",$db_link) or die(mysql_error());
     
    $i++;
    }
    Toutes mes tables ont l'interclassement utf8_general_ci mais je n'arrive toujours pas à changer celui des champs varchar.

    HELP!

    Questions:
    -Est ce qu'il faut bien changer l'interclassement en utf8_general_ci ?
    -Si oui, comment l'affecter à tous les champs ?

    Merci beaucoup,
    LTN

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il y a personne pour m'aider
    J'ai réussi à trouver un script pour changer tous mes interclassements, mais si quelqu'un pouvait me dire lequel utilisé s'il vous plaît, ce serait vraiment très sympa

    le utf8_general_ci ne semble pas prendre en compte les charactères "éàö..."
    et c'est très embêtant à l'affichage.

    Merci de m'aider.

  3. #3
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    J'ai le même problème que toi, je cherche à le résoudre sans succès. Notamment phpmyadmin est complètement bloqué avec ce problème d'interclassement. Je vais regarder ce week-end les raisons de ces problèmes car mon hébergeur va bientôt migrer également...
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Invité
    Invité(e)
    Par défaut
    Alors voilà ce qui je fais après m'être défoncer le crâne avec toute la doc

    Mettre les charsets de toutes les tables en utf8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `nom_table` DEFAULT CHARACTER SET utf8
    Mettre tous les champs texte, varchar etc... en interclassement utf8_unicode_ci pour pouvoir bien afficher les 'éàö...' etc...

    Sur PHPMyadmin, choisir l'interclassement latin1_german_ci pour la connection Mysql (Sur la page d'accueil). Je ne sais pas pourquoi

    Je les ai pratiquement tous testés pour arriver au résultat.

    Je pense que le charset des tables doit correspondre au jeu de caractères de la BDD (cf. Page d'accueil de PHPMyadmin "Jeu de Caractères pour Mysql", ici utf8)

    Je précise que je suis débutante donc ce que je dis n'est pas fiable. Mais ça marche pour moi

    @+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    en laissant tout à latin1 (comme ce qu'il y a par défaut quoi) et en demandant l'interclassement à latin1 dans phpMyAdmin (dernière version de préférence), il n'y a aucun problème !

    Y'a aucun interet à mettre les colonne en UTF-8, enfin dans la plupart des cas...
    les données en utf-8 prennent plus de place que les données en latin1, des que les caractères ne font pas partie de l'ascii, cela prend au minimum 2 caractères (cas des accents français), les colonnes en CHAR réserveront de la place en plus pour rien, ça ralentiera surement un (très) peu les recherches et demandera à MySQL de convertir, reconvertir des données... enfin, bref, c'est pas ce qu'il faut faire.

    Quand je dis qu'il n'y a aucun interet, c'est pas vraiment ça quand même, si vous mélanger plusieurs langues, cele est tres utiles (du chinois et du français dans la même colonne par exemple)

    nb: je suis presque sur de ce que je dis, mais si c'est pas exactement cela, merci de me le signaler, j'ai rechercher dernièrement des infos sur les codages justement pour des données dans diverses langues, et j'espère avoir compris comme il faut

  6. #6
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    J'ai remarqué quelquechose. Il existe deux scripts dans phpmyadmin pour créer ces fameuses tables pma_* dans la database phpmyadmin. Le second nom de fichier fini par 4.1.2+.

    Dans ce fichier on trouve un script différents où les interclassements et les charset sont prédéfinis. Cela marche parfaitement. Et l'analyse de ce code est riche d'enseignement.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  7. #7
    Invité
    Invité(e)
    Par défaut
    En latin1 les caractères spéciaux ne s'affichent pas

    Ex: Sixième => Six@ime ou un truc du genre.

    J'ai remarqué que les requêtes qui fonctionnaient dans mon code source ne fonctionnent pas forcément sur PHPMyAdmin... Si on pouvait m'éclairer à ce sujet (Pourquoi mettre le charset de toutes les tables en utf8 pour que ça marche dans le code source et sur phpmyadmin utiliser l'interclassement latin1 ??!)

    Je n'y comprends rien et je cherche des réponses

    @Alexandre T : Quels scripts ?! ça m'intéresse

  8. #8
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Je n'ai pas phpmyadin sous la main. De mémoire, ils sont dans le répertoire scripts de phpmyadmin. Attention, je parle de la version 2.6.X de phpmyAdmin .
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  9. #9
    Invité
    Invité(e)
    Par défaut
    Merci bien, je vais voir ce que je trouve

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer d'interclassement
    Par Christophe Charron dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/05/2010, 12h36
  2. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46
  3. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

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