Quel est le charset (par défaut) pour:
Base de données MySQL
Table MySQL
Colonne MySQL
Voici comment je le ferais -
Pour les schémas:
SELECT default_character_set_name FROM information_schema.SCHEMATA
WHERE schema_name = "schemaname";
Pour les tableaux:
SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "schemaname"
AND T.table_name = "tablename";
Pour les colonnes:
SELECT character_set_name FROM information_schema.`COLUMNS`
WHERE table_schema = "schemaname"
AND table_name = "tablename"
AND column_name = "columnname";
Pour colonnes:
SHOW FULL COLUMNS FROM table_name;
Pour bases de données :
USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";
Cf. cette page . Et consultez le manuel MySQL
Pour toutes les bases de données vous avez sur le serveur:
mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Sortie:
+----------------------------+---------+--------------------+
| database | charset | collation |
+----------------------------+---------+--------------------+
| information_schema | utf8 | utf8_general_ci |
| my_database | latin1 | latin1_swedish_ci |
...
+----------------------------+---------+--------------------+
Pour un base de données unique:
mysql> USE my_database;
mysql> show variables like "character_set_database";
Sortie:
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| character_set_database | latin1 |
+----------------------------+---------+
Obtenir le classement pour les tableaux:
mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';
OU - affichera le code SQL complet pour la table de création:
mysql> show create table my_tablename
Obtenir le classement de colonnes:
mysql> SHOW FULL COLUMNS FROM my_tablename;
sortie:
+---------+--------------+--------------------+ ....
| field | type | collation |
+---------+--------------+--------------------+ ....
| id | int(10) | (NULL) |
| key | varchar(255) | latin1_swedish_ci |
| value | varchar(255) | latin1_swedish_ci |
+---------+--------------+--------------------+ ....
Pour tables:
SHOW TABLE STATUS
listera toutes les tables.
Filtrer à l'aide de:
SHOW TABLE STATUS where name like 'table_123';
Pour bases de données:
Il suffit d'utiliser ces commandes:
USE db_name;
SELECT @@character_set_database;
-- or:
-- SELECT @@collation_database;
SELECT TABLE_SCHEMA, TABLE_NAME, CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET, COLUMN_NAME, COLUMN_TYPE, C.CHARTERS. ____.] FROM information_schema.TABLES AS T JOIN informations_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME) JOIN informations_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA ON (T.TABLE_COLLATION = CCSA. COLLATION_NAME) WHERE TABLE_SCHEMA = SCHEMA () ET C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext') ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME ;
Pour voir le classement par défaut de la base de données:
USE db_name;
SELECT @@character_set_database, @@collation_database;
Pour voir la collation de la table:
SHOW TABLE STATUS where name like 'table_name';
Pour voir la collation des colonnes:
SHOW FULL COLUMNS FROM table_name;
Je regarde toujours simplement SHOW CREATE TABLE mydatabase.mytable
.
Pour la base de données, il apparaît que vous devez regarder SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.
Pour tables et colonnes:
show create table your_table_name
Pour bases de données:
SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Exemple de sortie:
mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
+----------------------------+---------+--------------------+
| database | charset | collation |
+----------------------------+---------+--------------------+
| information_schema | utf8 | utf8_general_ci |
| drupal_demo1 | utf8 | utf8_general_ci |
| drupal_demo2 | utf8 | utf8_general_ci |
| drupal_demo3 | utf8 | utf8_general_ci |
| drupal_demo4 | utf8 | utf8_general_ci |
| drupal_demo5 | latin1 | latin1_swedish_ci |
...
+----------------------------+---------+--------------------+
55 rows in set (0.00 sec)
mysql>
Pour bases de données:
SHOW CREATE DATABASE "DB_NAME_HERE";
Lors de la création d'une base de données (MySQL), le jeu/classement de caractères par défaut est toujours LATIN, au lieu que vous en ayez sélectionné un autre lors de la création initiale de votre base de données.
Comme beaucoup l'ont écrit précédemment, SHOW FULL COLUMNS devrait être la méthode privilégiée pour obtenir des informations sur les colonnes. Ce qui manque, c'est un moyen d'obtenir un jeu de caractères après cela sans atteindre directement les tables de métadonnées:
SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'