답변:
내가하는 방법은 다음과 같습니다.
스키마 (또는 데이터베이스-동의어)의 경우 :
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";
schemaname
데이터베이스 이름 일 수 있습니다.
대한 열 :
SHOW FULL COLUMNS FROM table_name;
latin1_swedish_ci
인 경우 문자 집합은 이외의 다른 문자 일 수 없습니다 latin1
. 데이터 정렬이 utf8mb4_general_ci
이면 문자셋은 이외의 다른 문자 일 수 없습니다 utf8mb4
.
대한 데이터베이스 :
USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";
Cf. 이 페이지 . 그리고 MySQL 매뉴얼을 확인하십시오
서버에있는 모든 데이터베이스의 경우 :
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 |
...
+----------------------------+---------+--------------------+
A에 대한 하나의 데이터베이스 :
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';
OR-작성 테이블에 대한 전체 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 |
+---------+--------------+--------------------+ ....
type
니까? 나는 MySQL은 5.7.9가와 type
쇼 data type
열의를하지를 character set
. 같은 일부 int(10)
varchar(255)
등 ...이 아니라utf8
type
(가)로 data type
잘 @MTK로, 아마 위의 복사 붙여 넣기 오류입니다 "출력"섹션.
들어 테이블 :
SHOW TABLE STATUS
모든 테이블을 나열합니다.
다음을 사용하여 필터링 :
SHOW TABLE STATUS where name like 'table_123';
SELECT TABLE_SCHEMA, TABLE_NAME, DEFAULT_CHAR_SET로 CCSA.CHARACTER_SET_NAME, COLUMN_NAME, COLUMN_TYPE, C.CHARACTER_SET_NAME information_schema.TABLES AS T에서 information_schema.COLUMNS AS C를 사용하여 참여 (TABLE_SCHEMA, TABLE_NAME) CCSA로 information_schema.COLLATION_CHARACTER_SET_APPLICABILITY에 가입 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 ;
난 항상 봅니다 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;
했고 그것은 훌륭하게 일했다 :) 감사합니다!
데이터베이스의 기본 데이터 정렬을 보려면
USE db_name;
SELECT @@character_set_database, @@collation_database;
테이블의 데이터 정렬을 보려면
SHOW TABLE STATUS where name like 'table_name';
열의 데이터 정렬을 보려면
SHOW FULL COLUMNS FROM table_name;
대한 데이터베이스 :
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>
대한 데이터베이스 :
SHOW CREATE DATABASE "DB_NAME_HERE";
데이터베이스 작성 (MySQL)에서 기본 문자 세트 / 콜 레이션은 항상 라틴입니다. 대신 데이터베이스를 처음 작성할 때 다른 문자 세트를 선택하십시오.
latin1_swedish_ci
콜 레이션은 MySQL을 만든 Monty Widenius가 스웨덴어이기 때문에 시작했을 때의 큰 그림으로 생각하지 않았기 때문입니다.
많은 사람들이 이전에 썼 듯이 SHOW FULL COLUMNS는 열 정보를 얻는 데 선호되는 방법이어야합니다. 누락 된 것은 메타 데이터 테이블에 직접 도달하지 않고 그 후에 문자 집합을 얻는 방법입니다.
SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
SHOW CREATE TABLE
설명 된대로 간단히 사용하십시오 .