Как узнать, какой символ задает база данных MySQL/стол/столбец?

Что такое (по умолчанию) кодировка для:

  • База данных MySQL

  • Таблица MySQL

  • столбец MySQL

Ответ 1

Вот как бы я это сделал -

Для схем (или баз данных - это синонимы):

SELECT default_character_set_name FROM information_schema.SCHEMATA 
WHERE schema_name = "schemaname";

Для таблиц:

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";

Для столбцов:

SELECT character_set_name FROM information_schema.'COLUMNS' 
WHERE table_schema = "schemaname"
  AND table_name = "tablename"
  AND column_name = "columnname";

Ответ 2

Для столбцов :

SHOW FULL COLUMNS FROM table_name;

Ответ 3

Для баз данных:

USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";

Cf. эта страница. И проверьте руководство по MySQL

Ответ 4

Для всех баз данных на вашем сервере:

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    |
| my_database                | latin1  | latin1_swedish_ci  |
...
+----------------------------+---------+--------------------+

Для одной базы данных:

mysql> USE my_database;
mysql> show variables like "character_set_database";

Выход:

    +----------------------------+---------+
    | Variable_name              |  Value  |
    +----------------------------+---------+
    | character_set_database     |  latin1 | 
    +----------------------------+---------+

Получение сопоставления для таблиц:

mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';

ИЛИ - выведет полный SQL для создания таблицы:

mysql> show create table my_tablename


Получение сопоставления столбцов:

mysql> SHOW FULL COLUMNS FROM my_tablename;

выход:

+---------+--------------+--------------------+ ....
| field   | type         | collation          |
+---------+--------------+--------------------+ ....
| id      | int(10)      | (NULL)             |
| key     | varchar(255) | latin1_swedish_ci  |
| value   | varchar(255) | latin1_swedish_ci  |
+---------+--------------+--------------------+ ....

Ответ 5

Для таблиц:

SHOW TABLE STATUS отобразит все таблицы.

Фильтр с использованием:

SHOW TABLE STATUS where name like 'table_123';

Ответ 6

Для баз данных:

Просто используйте следующие команды:

USE db_name;
SELECT @@character_set_database;
-- or:
-- SELECT @@collation_database;

Ответ 7

SELECT TABLE_SCHEMA,
       TABLE_NAME,
       CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET,
       COLUMN_NAME,
       COLUMN_TYPE,
       C.CHARACTER_SET_NAME
  FROM information_schema.TABLES AS T
  JOIN information_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME)
  JOIN information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA
       ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
 WHERE TABLE_SCHEMA=SCHEMA()
   AND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext')
 ORDER BY TABLE_SCHEMA,
          TABLE_NAME,
          COLUMN_NAME
;

Ответ 8

Чтобы увидеть параметры сортировки базы данных по умолчанию:

USE db_name;
SELECT @@character_set_database, @@collation_database;

Чтобы увидеть сопоставление таблицы:

SHOW TABLE STATUS where name like 'table_name';

Чтобы увидеть сортировку столбцов:

SHOW FULL COLUMNS FROM table_name;

Ответ 9

Я всегда просто смотрю SHOW CREATE TABLE mydatabase.mytable.

Для базы данных, похоже, вам нужно посмотреть SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA.

Ответ 10

Для таблиц и столбцов:

show create table your_table_name

Ответ 11

Для баз данных:

SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;

Пример вывода:

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> 

Ответ 12

Для баз данных:

SHOW CREATE DATABASE "DB_NAME_HERE";

При создании базы данных (MySQL) набор символов/сортировка по умолчанию всегда LATIN, вместо этого вы выбрали другой вариант при первоначальном создании своей базы данных

Ответ 13

Как многие писали ранее, SHOW FULL COLUMNS должен быть предпочтительным методом для получения информации о столбцах. Отсутствует способ получить кодировку после этого без непосредственного доступа к таблицам метаданных:

SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'