Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 15/11/2004, 09h43   #1
LTN
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 15
Points : 15
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 :
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
LTN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2004, 09h48   #2
LTN
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 15
Points : 15
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.
LTN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2004, 10h34   #3
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2004, 16h54   #4
LTN
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 15
Points : 15
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 :
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

@+
LTN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2004, 19h35   #5
Invité régulier
 
Inscription : novembre 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 9
Points : 6
Points : 6
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
auto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2004, 11h00   #6
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2004, 17h04   #7
LTN
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 15
Points : 15
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
LTN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2004, 09h06   #8
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2004, 12h37   #9
LTN
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 32
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 32
Points : 15
Points : 15
Merci bien, je vais voir ce que je trouve
LTN 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 08h16.


 
 
 
 
Partenaires

Hébergement Web