Câu trả lời:
Đây là cách tôi làm -
Đối với Lược đồ (hoặc Cơ sở dữ liệu - chúng là từ đồng nghĩa):
SELECT default_character_set_name FROM information_schema.SCHEMATA
WHERE schema_name = "schemaname";
Đối với Bàn:
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";
Đối với Cột:
SELECT character_set_name FROM information_schema.`COLUMNS`
WHERE table_schema = "schemaname"
AND table_name = "tablename"
AND column_name = "columnname";
schemaname
có thể chỉ là tên cơ sở dữ liệu.
Đối với cột :
SHOW FULL COLUMNS FROM table_name;
latin1_swedish_ci
, bộ ký tự không thể là bất cứ thứ gì khác ngoài latin1
. Nếu đối chiếu là utf8mb4_general_ci
, bộ ký tự không thể là bất cứ thứ gì khác ngoài utf8mb4
.
Đối với cơ sở dữ liệu :
USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";
Cf. trang này . Và xem hướng dẫn sử dụng MySQL
Đối với tất cả các cơ sở dữ liệu bạn có trên máy chủ:
mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Đầu ra:
+----------------------------+---------+--------------------+
| database | charset | collation |
+----------------------------+---------+--------------------+
| information_schema | utf8 | utf8_general_ci |
| my_database | latin1 | latin1_swedish_ci |
...
+----------------------------+---------+--------------------+
Đối với một cơ sở dữ liệu :
mysql> USE my_database;
mysql> show variables like "character_set_database";
Đầu ra:
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| character_set_database | latin1 |
+----------------------------+---------+
Bắt đối chiếu cho các Bảng :
mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';
HOẶC - sẽ xuất SQL hoàn chỉnh để tạo bảng:
mysql> show create table my_tablename
Lấy đối chiếu các cột :
mysql> SHOW FULL COLUMNS FROM my_tablename;
đầu ra:
+---------+--------------+--------------------+ ....
| field | type | collation |
+---------+--------------+--------------------+ ....
| id | int(10) | (NULL) |
| key | varchar(255) | latin1_swedish_ci |
| value | varchar(255) | latin1_swedish_ci |
+---------+--------------+--------------------+ ....
type
? Tôi có mysql 5.7.9 và type
hiển thị data type
cột không phải là character set
. Một số như int(10)
varchar(255)
... vv và khôngutf8
type
như data type
@MTK, có lẽ ở trên là lỗi sao chép trong phần "đầu ra:".
Đối với bảng :
SHOW TABLE STATUS
sẽ liệt kê tất cả các bảng.
Lọc bằng:
SHOW TABLE STATUS where name like 'table_123';
CHỌN TABLE_SCHema, TABLE_NAME, CCSA.CHARACTER_SET_NAME NHƯ DEFAULT_CHAR_SET, TÊN CỘT DỌC, COLUMN_TYPE, C.CHARACTER_SET_NAME TỪ information_schema.TABLES AS T THAM GIA thông tin_schema.COLUMNS NHƯ C SỬ DỤNG (TABLE_SCHema, TABLE_NAME) THAM GIA thông tin_schema.COLLATION_CHARACTER_SET_APPLICABILITY NHƯ CCSA BẬT (T.TABLE_COLLATION = CCSA.COLLATION_NAME) WHERE TABLE_SCHema = SCHema () VÀ C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'Mediumtext', 'longtext') ĐẶT HÀNG B TNG TABLE_SCHema, TABLE_NAME, TÊN CỘT DỌC ;
Tôi luôn luôn chỉ nhìn vào SHOW CREATE TABLE mydatabase.mytable
.
Đối với cơ sở dữ liệu, có vẻ như bạn cần xem xét SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.
select default_character_set_name from information_schema.schemata
là không đủ vì bạn không thể biết hàng nào tương quan với cơ sở dữ liệu nào. Sử dụng select default_character_set_name,schema_name from information_schema.schemata
hoặc đơn giản là : select*from information_schema.schemata
.
SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
Và nó hoạt động rất tốt :) Cảm ơn!
Để xem đối chiếu mặc định của cơ sở dữ liệu:
USE db_name;
SELECT @@character_set_database, @@collation_database;
Để xem đối chiếu của bảng:
SHOW TABLE STATUS where name like 'table_name';
Để xem đối chiếu các cột:
SHOW FULL COLUMNS FROM table_name;
Đối với cơ sở dữ liệu :
SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Ví dụ đầu ra:
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>
Đối với cơ sở dữ liệu :
SHOW CREATE DATABASE "DB_NAME_HERE";
Khi tạo Cơ sở dữ liệu (MySQL), bộ / ký tự mặc định luôn luôn là LATIN, thay vào đó bạn đã chọn một cơ sở dữ liệu khác khi tạo cơ sở dữ liệu ban đầu
latin1_swedish_ci
bởi vì Monty Widenius, người tạo ra MySQL, là người Thụy Điển và đã không nghĩ là Bức tranh lớn như anh ta nên có khi bắt đầu.
Như nhiều người đã viết trước đó, SHOW FULL COLUMNS nên là phương pháp ưa thích để lấy thông tin cột. Điều còn thiếu là một cách để có bộ ký tự sau đó mà không cần truy cập trực tiếp vào bảng siêu dữ liệu:
SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
SHOW CREATE TABLE
, như được thảo luận trong stackoverflow.com/questions/57628217/iêu