Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils 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 03/02/2007, 19h46   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Changer le jeu de caractères d'une base entière

Bonsoir à tous,

J'ai regardé attentivement la FAQ...le forum...rien trouvé. Alors je pose ma question:
Comment changer le jeu de caractères de toute une base et donc, de toutes les tables qui la contiennent. Bref je veux la passer en UTF-8.
J'ai PhpMyadmin 2.5.7-pl1

Et c'est vraiment le bin's, ces jeux de caractères/interclassement !

Merci de votre coup de main.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2007, 21h20   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
il faut le faire table par table avec ALTER TABLE... CONVERT.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 00h24   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Merci du tuyau.

C'est vachement bien foutu, ce truc !
Je n'ai que 300 tables dans la base, ça va aller vite !
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 03h09   #4
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
un code dynamique quelconque te fait ça fastoche. Exemple en PHP:

Code php :
1
2
3
4
5
6
7
 
$sql = 'show tables' ;
$resu = mysql_query($sql) ;
while (list($table) = mysql_fetch_row($resu)) {
  $sql = "ALTER TABLE $table CONVERT..." ;
  mysql_query($sql) ;
}

n'oublie pas non plus de changer le jeu par défaut de ta base (ALTER DATABASE...).
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h54   #5
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonjour et merci de ton bout de code: il m'a en effet permis de changer le jeu de caractères de toute la base. J'ai ensuite fait l'instruction

Code :
1
2
 
ALTER DATABASE `mabase`CONVERT TO CHARACTER SET utf8
Mais j'ai eu une erreur de syntaxe sql.

Cependant, j'ai fait un test en créant une nouvelle table dans cette base (sur mon phpMyAdmin local), et par défaut, le jeu de caractère est latin1_swedish_ci...
Le problème est que quand j'exporte cette table pour l'importer sur mon serveur - dont la version est la même que mon local (2.5.7-pl1) - j'ai une erreur et un echec: cette ligne du fichier sql d'export n'est pas comprise:
DEFAULT CHARSET = latin1

C'est à cause du alter database qui a échoué ? que donc le jeu de caractère par défaut n'a pas été modifié ?


Je suis plongé dans ton tuto "jeux de caractères et collations...", mais c'est un peu ardu.
As tu une idée ?
D'avance merci.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 13h57   #6
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Pour changer le jeu par défaut de la base :

Code :
ALTER DATABASE `mabase` CHARSET utf8 ;
C'est dans le grand tableau page 4 de mon article

Citation:
Envoyé par renaud26
cette ligne du fichier sql d'export n'est pas comprise:
DEFAULT CHARSET = latin1
je veux bien que tu me donnes un peu plus de contexte, mais si c'est à la suite d'un CREATE DATABASE ou d'un CREATE TABLE, c'est sans le = :

__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 14h15   #7
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Oui, effectivement, ton instruction ALTER DATABASE fonctionne parfaitement.
Je l'exécute donc.
Puis je recrée une table test. Que j'exporte.
Voici le fichier sql qui en découle (toujours pas supporté par mon serveur)

Code :
1
2
3
4
5
6
 
DROP TABLE IF EXISTS `test_carac`;
CREATE TABLE `test_carac` (
  `test1` varchar(50) NOT NULL DEFAULT '',
  `test2` varchar(50) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
...et décidément...ce DEFAULT CHARSET=latin1 ne passe pas...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 17h37   #8
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Je viens de tester ta requête telle quelle sur Free (MySQL 5.0.27), ça passe sans problème... Tu devrais tester ta version avec :

__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 18h44   #9
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Je viens de tester ma version.
C'est 4.1.9-max

Mais par défaut,à la création d'une table, j'ai toujours latin1_swedish_ci sur les champs et
DEFAULT CHARSET=latin1
quand j'exporte. Il faut que je mette à jour ma version SQL ?
Merci de ta patience.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 20h40   #10
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
non, il faut juste enlever le =... c'est une petite divergence entre la 4.1 et la 5.

Pour tes histoires de jeux par défaut mal placés... que donne cette requête sur ton serveur source ?

Code :
SHOW VARIABLES LIKE 'char%' ;
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 09h31   #11
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonjour,

J'ai exécuté ta requete sur mon serveur local, pour une base, voici le résultat:

Code :
1
2
3
4
5
6
7
8
9
 
Variable_name  Value  
character_set_client latin1 
character_set_connection latin1 
character_set_database utf8 
character_set_results latin1 
character_set_server latin1 
character_set_system utf8 
character_sets_dir D:\EasyPHP1-8\mysql\share\charsets/
Je ne sais pas si ça te dit grand chose...
renaud26 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 20h38.


 
 
 
 
Partenaires

Hébergement Web