Jawaban:
Begini cara saya melakukannya -
Untuk Skema (atau Basis Data - mereka adalah sinonim):
SELECT default_character_set_name FROM information_schema.SCHEMATA
WHERE schema_name = "schemaname";
Untuk Tabel:
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";
Untuk Kolom:
SELECT character_set_name FROM information_schema.`COLUMNS`
WHERE table_schema = "schemaname"
AND table_name = "tablename"
AND column_name = "columnname";
schemaname
mungkin hanya nama database.
Untuk kolom :
SHOW FULL COLUMNS FROM table_name;
latin1_swedish_ci
, charset tidak bisa menjadi hal lain selain itu latin1
. Jika collation adalah utf8mb4_general_ci
, charset tidak bisa menjadi hal lain selain itu utf8mb4
.
Untuk basis data :
USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";
Lih halaman ini . Dan lihat manual MySQL
Untuk semua database yang Anda miliki di server:
mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Keluaran:
+----------------------------+---------+--------------------+
| database | charset | collation |
+----------------------------+---------+--------------------+
| information_schema | utf8 | utf8_general_ci |
| my_database | latin1 | latin1_swedish_ci |
...
+----------------------------+---------+--------------------+
Untuk satu Database :
mysql> USE my_database;
mysql> show variables like "character_set_database";
Keluaran:
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| character_set_database | latin1 |
+----------------------------+---------+
Mendapatkan kolasi untuk Tabel :
mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';
ATAU - akan menampilkan SQL lengkap untuk membuat tabel:
mysql> show create table my_tablename
Mendapatkan susunan kolom :
mysql> SHOW FULL COLUMNS FROM my_tablename;
keluaran:
+---------+--------------+--------------------+ ....
| field | type | collation |
+---------+--------------+--------------------+ ....
| id | int(10) | (NULL) |
| key | varchar(255) | latin1_swedish_ci |
| value | varchar(255) | latin1_swedish_ci |
+---------+--------------+--------------------+ ....
type
? Saya memiliki mysql 5.7.9 dan type
menunjukkan data type
kolom bukan character set
. Beberapa suka int(10)
varchar(255)
... dll dan tidakutf8
type
sebagai data type
sebagai @MTK juga, mungkin di atas adalah kesalahan copy paste di "output:" bagian.
Untuk tabel :
SHOW TABLE STATUS
akan mencantumkan semua tabel.
Filter menggunakan:
SHOW TABLE STATUS where name like 'table_123';
SELECT TABLE_SCHEMA, TABLE_NAME, CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET, NAMA KOLOM, COLUMN_TYPE, C.CHARACTER_SET_NAME DARI information_schema.TABLES SEBAGAI T GABUNG information_schema.COLUMNS AS C MENGGUNAKAN (TABLE_SCHEMA, TABLE_NAME) GABUNG information_schema.COLLATION_CHARACTER_SET_APPLICABILITY SEBAGAI CCSA ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME) WHERE TABLE_SCHEMA = SCHEMA () DAN C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext') PESANAN OLEH TABLE_SCHEMA, TABLE_NAME, NAMA KOLOM ;
Saya selalu hanya melihat SHOW CREATE TABLE mydatabase.mytable
.
Untuk database, sepertinya Anda perlu melihatnya SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.
select default_character_set_name from information_schema.schemata
tidak cukup karena Anda tidak dapat menentukan baris mana yang berkorelasi dengan database mana. Gunakan select default_character_set_name,schema_name from information_schema.schemata
atau hanya: select*from information_schema.schemata
.
SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
Dan itu bekerja dengan baik :) Terima kasih!
Untuk melihat susunan default dari basis data:
USE db_name;
SELECT @@character_set_database, @@collation_database;
Untuk melihat susunan tabel:
SHOW TABLE STATUS where name like 'table_name';
Untuk melihat susunan kolom:
SHOW FULL COLUMNS FROM table_name;
Untuk tabel dan kolom :
show create table your_table_name
Untuk basis data :
SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
Contoh output:
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>
Untuk basis data :
SHOW CREATE DATABASE "DB_NAME_HERE";
Dalam membuat Database (MySQL), set / collation karakter default selalu LATIN, sebagai gantinya Anda telah memilih yang berbeda pada awalnya membuat database Anda
latin1_swedish_ci
karena Monty Widenius, pencipta MySQL, adalah Swedia dan tidak berpikir sebagai Gambaran Besar seperti yang seharusnya ketika ia mulai.
Seperti yang banyak ditulis sebelumnya, SHOW FULL COLUMNS harus menjadi metode yang disukai untuk mendapatkan informasi kolom. Apa yang hilang adalah cara untuk mendapatkan charset setelah itu tanpa mencapai tabel metadata secara langsung:
SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
SHOW CREATE TABLE
, seperti yang dibahas di stackoverflow.com/questions/57628217/…