Mysql

De Linuxmemo.

(Différences entre les versions)
Ligne 73 : Ligne 73 :
  ALTER TABLE table CHANGE colonne colonne type_binaire;
  ALTER TABLE table CHANGE colonne colonne type_binaire;
  ALTER TABLE table CHANGE colonne colonne type_texte CHARACTER SET jeu_de_caracteres;
  ALTER TABLE table CHANGE colonne colonne type_texte CHARACTER SET jeu_de_caracteres;
 +
 +
=== Jeux de caractères et interclassements de connexion ===
 +
Quatre variables MySQL :
 +
*'''character_set_client''' indique au serveur l'encodage que le client utilise, c'est-à-dire dans quel jeu de caractères sont transmises les données du client vers le serveur.
 +
*'''character_set_connection''' indique dans quel jeu de caractères le serveur va convertir les données avant de les traiter. Sauf rares exceptions, on indiquera la même valeur que pour character_set_client, afin d'éviter les conversions intermédiaires qui ne servent pas à grand-chose dans la plupart des cas.
 +
*'''collation_connection''' indique quel interclassement sera utilisé dans la comparaison de chaînes littérales, c'est-à-dire par exemple "machin" = "chose". Cette variable n'a aucun effet sur les comparaisons impliquant des colonnes, car celles-ci ont leur propre interclassement.
 +
*'''character_set_results''' indique au serveur dans quel jeu de caractères celui-ci doit transmettre les résultats. Généralement, on indiquera le même encodage que pour character_set_client.
 +
 +
SET variable = valeur
 +
 +
SET character_set_client = jeu_de_caracteres;
 +
SET character_set_results = jeu_de_caracteres;
 +
SET character_set_connection = jeu_de_caracteres;
 +
ou en une seul fois
 +
SET NAMES jeu_de_caracteres

Version du 7 mai 2012 à 11:41


Sommaire

Les commandes Client du démon "sqld"

  • Connexion au shell
mysql -uuser -p
  • Utile dans le shell:
ego       (\G) Send command to mysql server, display result vertically.
clear     (\c) Clear the current input statement.
help contents
help commande_sql
  • Verification des droits:
mysqlacces user base -U root -P
  • Dump des bases et/ou tables:
mysqldump [options] db_name [tables]
  • display database, table, and column information
mysqlshow

Encodage

Obtenir des informations sur l'encodage

SHOW VARIABLES LIKE 'char%';

Pour afficher la liste de tous les jeux de caractères supportés par votre serveur MySQL:

SHOW CHARACTER SET

Pour afficher la liste des interclassements:

SHOW COLLATION

Changer l'encodage par défaut d'un serveur MySQL

Modifier le fichier de configuration /etc/my.cnf en ajoutant des paramètres similaires à ceux donnés ici (utilisation de utf8 dans l'exemple).

[mysqld]
#Set the default character set
default-character-set=utf8
#Set the default collation
default-collation=utf8_general_ci

Il faudra ensuite redémarrer le serveur

# /etc/init.d/mysqld restart
mysql> SHOW VARIABLES LIKE 'character_set_system';
character_set_system utf8

Changer l'encodage pour une base de données, pour une table, et pour une colonne d'une table

  • pour une base de données:
CREATE DATABASE base_de_donnees [...] CHARACTER SET jeu_de_caracteres COLLATE interclassement
ALTER DATABASE base_de_donnees CHARACTER SET jeu_de_caracteres COLLATE interclassement
  • pour une table :
CREATE TABLE table [...] CHARACTER SET jeu_de_caracteres COLLATE interclassement
ALTER TABLE table CHARACTER SET jeu_de_caracteres COLLATE interclassement
  • pour une colonne :
CREATE TABLE table (
colonne [...] CHARACTER SET jeu_de_caracteres COLLATE interclassement
[...]
)
[...]
ALTER TABLE table CHANGE colonne colonne type CHARACTER SET jeu_de_caracteres COLLATE interclassement
  • convertir toutes les colonnes de la table à un jeu de caractères précis:
ALTER TABLE table CONVERT TO CHARACTER SET jeu_de_caracteres COLLATE interclassement

Comment rétablir la cohérence de mes données

  • La documentation MySQL indique une astuce pour rétablir la situation : convertir la colonne en type binaire (BLOB, par exemple), puis la reconvertir en type texte en pécifiant le jeu de caractères voulu :
ALTER TABLE table CHANGE colonne colonne type_binaire;
ALTER TABLE table CHANGE colonne colonne type_texte CHARACTER SET jeu_de_caracteres;

Jeux de caractères et interclassements de connexion

Quatre variables MySQL :

  • character_set_client indique au serveur l'encodage que le client utilise, c'est-à-dire dans quel jeu de caractères sont transmises les données du client vers le serveur.
  • character_set_connection indique dans quel jeu de caractères le serveur va convertir les données avant de les traiter. Sauf rares exceptions, on indiquera la même valeur que pour character_set_client, afin d'éviter les conversions intermédiaires qui ne servent pas à grand-chose dans la plupart des cas.
  • collation_connection indique quel interclassement sera utilisé dans la comparaison de chaînes littérales, c'est-à-dire par exemple "machin" = "chose". Cette variable n'a aucun effet sur les comparaisons impliquant des colonnes, car celles-ci ont leur propre interclassement.
  • character_set_results indique au serveur dans quel jeu de caractères celui-ci doit transmettre les résultats. Généralement, on indiquera le même encodage que pour character_set_client.
SET variable = valeur
SET character_set_client = jeu_de_caracteres;
SET character_set_results = jeu_de_caracteres;
SET character_set_connection = jeu_de_caracteres;
ou en une seul fois
SET NAMES jeu_de_caracteres
Outils personnels