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

Outils MySQL Discussion :

Changer le jeu de caractères d'une base entière


Sujet :

Outils MySQL

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    il faut le faire table par table avec ALTER TABLE... CONVERT.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci du tuyau.

    C'est vachement bien foutu, ce truc !
    Je n'ai que 300 tables dans la base, ça va aller vite !

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    un code dynamique quelconque te fait ça fastoche. Exemple en PHP:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Pour changer le jeu par défaut de la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    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 Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  9. #9
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    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.

  10. #10
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW VARIABLES LIKE 'char%' ;
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  11. #11
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Comment changer le jeu de caractères d'une base ?
    Par Mister Paul dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 02/03/2007, 04h19
  3. Changer Jeu de caractère de la base
    Par lido dans le forum Oracle
    Réponses: 1
    Dernier message: 05/01/2007, 08h20
  4. [SQLSERVER2000] Changer la collation par défaut d'une base
    Par vmolines dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/12/2005, 15h22
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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