Должен отметить, что information_schema только в MySQL 5 и далее, я считаю.
Vex
4
Насколько я могу судить, самое близкое к тому, что вы можете получить для получения информации о наборе символов, специфичных для столбцов в MySQL <5, - это выполнить ПОКАЗАТЬ ПОЛНЫЕ КОЛОННЫ ИЗ tableName
Робин Уинслоу
14
Этот ответ был очень полезен, но если вы хотите решить проблему с набором символов / сопоставлением, вам, возможно, также понадобится проверить соединение набор символов: символ_символа и т. Д. ...: SHOW VARIABLES LIKE 'character_set%'; ПОКАЗАТЬ ПЕРЕМЕННЫЕ НРАВИТСЯ 'collation%';
BenL
2
табличная операция возвращает мне «пустой набор (0,00 сек)»
minhajul
9
Для схем-манекенов: обратите внимание, это schemanameможет быть просто имя базы данных.
Здравствуйте, это будущее говорит! Для тех, кто проверяет этот ответ, этот метод показывает только сопоставление, а не набор символов. Я считаю, что это изменилось в MySQL 5. (См. Ответ с большим количеством пунктов для лучшего метода).
Фиделопер
20
@fideloper, с помощью сопоставления вы можете сказать кодировку. Это потому, что первая часть сопоставления включает в себя набор символов, например, если это сопоставление latin1_swedish_ci, набор символов не может быть ничем иным, кроме latin1. Если сопоставление есть utf8mb4_general_ci, кодировка не может быть ничем иным, кроме utf8mb4.
Pacerier
1
Это говорит вам о наборе символов таблицы. Он не сообщает вам набор символов таблиц, созданных в будущем, когда в синтаксисе создания таблицы не указан набор символов (для этого вам понадобится набор символов схемы).
HoldOffHunger
217
Для баз данных :
USE your_database_name;
show variables like"character_set_database";-- or:-- show variables like "collation_database";
Для какой версии mysql показывать этот вывод type? У меня есть mysql 5.7.9, и я typeпоказываю data typeстолбец, а не character set. Некоторым нравится int(10)varchar(255)... и т. Д. И нетutf8
MTK
Мой вывод показывает , typeкак data typeа @MTK, возможно , выше , является ошибкой копировать вставить в «выход:» раздел.
Пожалуйста, обратите внимание. Параметры сортировки, отображаемые в состоянии отображения таблицы, не являются набором символов таблицы. Сопоставление говорит вам, как символы сортируются / сравниваются. Например, utf8_bin_ci сравнивает данные без учета регистра (без учета регистра, поэтому «m» и «M» одинаковы), utf8_bin_cs сравнивает с учетом регистра (поэтому «m» и «M» различны). Это не то же самое, что набор символов таблицы.
ВЫБЕРИТЕ 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
ПРИСОЕДИНЯЙТЕСЬ к information_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME)
ПРИСОЕДИНИТЕСЬ к information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA
ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
ГДЕ TABLE_SCHEMA = SCHEMA ()
AND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext')
ORDER BY TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
;
Очень мило, Эрик. Просто вставьте этот код в командную строку mysql, нажмите return, и вы получите набор символов для каждого столбца в каждой таблице в каждой базе данных :)
Джерри Кринок
1
@JerryKrinock Вы получаете все столбцы текущей базы данных и ничего, если база данных не выбрана.
Ортомала Локни
24
Я всегда просто смотрю на SHOW CREATE TABLE mydatabase.mytable.
Для базы данных, кажется, вам нужно посмотреть SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA.
в базах данных mysql могут быть наборы символов по умолчанию
James
3
select default_character_set_name from information_schema.schemataнедостаточно, потому что вы не можете сказать, какая строка соотносится с какой базой данных. Используйте select default_character_set_name,schema_name from information_schema.schemataили просто: select*from information_schema.schemata.
Pacerier
Я использовал SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G; И это работало отлично :) Спасибо!
Санкальп
23
Чтобы увидеть параметры сортировки базы данных по умолчанию:
USE db_name;SELECT@@character_set_database,@@collation_database;
Он сообщает вам полный SQL-код, который будет использоваться для создания таблицы в том виде, в котором она в данный момент находится, которая должна включать ее набор символов.
Джеймс
Кроме того, если в столбце не указан конкретный набор символов, он использует набор символов по умолчанию для таблицы.
При создании базы данных (MySQL) набор символов / сопоставление по умолчанию всегда LATIN, вместо этого вы выбрали другой при первоначальном создании базы данных.
Цитата, необходимая для "набора символов / сопоставления по умолчанию, всегда LATIN" в MySQL.
Pacerier
Нужна цитата? Вы когда-нибудь использовали базу данных MySQL? Всем известно, что набор символов / сопоставление по умолчанию объясняется latin1_swedish_ciтем, что Монти Видениус, создатель MySQL, является шведским и не думал о себе как о большой картине, как следовало бы, когда он начинал.
Спенсер Уильямс
5
Как многие писали ранее, SHOW FULL COLUMNS должен быть предпочтительным методом для получения информации о столбцах. Чего не хватает, так это способа получить кодировку без непосредственного доступа к таблицам метаданных
SHOW FULL COLUMNS FROM my_table WHERE Field ='my_field'
SHOW COLLATION WHERE Collation ='collation_you_got'
SHOW CREATE TABLE
, как описано в stackoverflow.com/questions/57628217/…Ответы:
Вот как бы я это сделал -
Для схем (или баз данных - это синонимы):
Для таблиц:
Для столбцов:
источник
schemaname
может быть просто имя базы данных.Для столбцов :
источник
latin1_swedish_ci
, набор символов не может быть ничем иным, кромеlatin1
. Если сопоставление естьutf8mb4_general_ci
, кодировка не может быть ничем иным, кромеutf8mb4
.Для баз данных :
Ср эта страница . И проверить руководство MySQL
источник
Для всех баз данных на сервере:
Вывод:
Для одной базы данных :
Вывод:
Получение сопоставления для таблиц :
ИЛИ - выведет полный SQL для создания таблицы:
mysql> show create table my_tablename
Получение сопоставления столбцов :
вывод:
источник
type
? У меня есть mysql 5.7.9, и яtype
показываюdata type
столбец, а неcharacter set
. Некоторым нравитсяint(10)
varchar(255)
... и т. Д. И нетutf8
type
какdata type
а @MTK, возможно , выше , является ошибкой копировать вставить в «выход:» раздел.Для таблиц :
SHOW TABLE STATUS
перечислит все таблицы.Фильтр с использованием:
источник
Для баз данных :
Просто используйте эти команды:
источник
источник
Я всегда просто смотрю на
SHOW CREATE TABLE mydatabase.mytable
.Для базы данных, кажется, вам нужно посмотреть
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.источник
select default_character_set_name from information_schema.schemata
недостаточно, потому что вы не можете сказать, какая строка соотносится с какой базой данных. Используйтеselect default_character_set_name,schema_name from information_schema.schemata
или просто:select*from information_schema.schemata
.SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
И это работало отлично :) Спасибо!Чтобы увидеть параметры сортировки базы данных по умолчанию:
Чтобы увидеть сопоставление таблицы:
Чтобы увидеть сортировку столбцов:
источник
Для таблиц и столбцов :
источник
Для баз данных :
Пример вывода:
источник
Для баз данных :
При создании базы данных (MySQL) набор символов / сопоставление по умолчанию всегда LATIN, вместо этого вы выбрали другой при первоначальном создании базы данных.
источник
latin1_swedish_ci
тем, что Монти Видениус, создатель MySQL, является шведским и не думал о себе как о большой картине, как следовало бы, когда он начинал.Как многие писали ранее, SHOW FULL COLUMNS должен быть предпочтительным методом для получения информации о столбцах. Чего не хватает, так это способа получить кодировку без непосредственного доступа к таблицам метаданных
источник