Perlu dicatat bahwa information_schema hanya di MySQL 5 dan seterusnya saya percaya.
Vex
4
Sejauh yang saya tahu paling dekat Anda bisa mendapatkan kolom informasi set karakter khusus di MySQL <5 adalah melakukan SHOW FULL COLUMNS FROM tableName
Robin Winslow
14
Jawaban ini sangat membantu, tetapi jika Anda ingin kesulitan memotret masalah character_set / collation Anda mungkin juga perlu memeriksa koneksi character_set, client_character_set dll ...: TAMPILKAN VARIABEL SEPERTI 'character_set%'; TAMPILKAN VARIABEL SEPERTI 'collation%';
BenL
2
operasi tabel mengembalikan "Set kosong (0,00 dtk)" untuk saya
minhajul
9
Untuk Skema-Dummies: Catatan, itu schemanamemungkin hanya nama database.
Halo, ini masa depan! Bagi siapa pun yang memeriksa jawaban ini, metode ini hanya menampilkan Collation, bukan charset. Saya percaya ini berubah di MySQL 5. (Lihat jawaban dengan lebih banyak poin untuk metode yang lebih baik).
fideloper
20
@fideloper, Dengan pemeriksaan Anda bisa memberi tahu rangkaian karakter. Itu karena bagian pertama dari collation termasuk charset, misalnya jika collation adalah 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.
Pacerier
1
Ini memberitahu Anda set karakter tabel. Itu tidak memberi tahu Anda set karakter tabel yang dibuat di masa depan ketika tidak ada set karakter yang ditentukan dalam sintaks tabel buat (Anda akan memerlukan set karakter skema untuk itu).
HoldOffHunger
217
Untuk basis data :
USE your_database_name;
show variables like"character_set_database";-- or:-- show variables like "collation_database";
Untuk versi mysql apa hasil keluaran ini type? Saya memiliki mysql 5.7.9 dan typemenunjukkan data typekolom bukan character set. Beberapa suka int(10)varchar(255)... dll dan tidakutf8
MTK
Saya keluaran menunjukkan typesebagai data typesebagai @MTK juga, mungkin di atas adalah kesalahan copy paste di "output:" bagian.
Tolong dicatat. Susunan yang ditunjukkan dalam status tabel tunjukkan bukanlah rangkaian karakter dari tabel. Kolasi memberi tahu Anda bagaimana karakter diurutkan / dibandingkan. mis. utf8_bin_ci membandingkan data tanpa mempertimbangkan case (case-sensitive, jadi "m" dan "M" sama), utf8_bin_cs membandingkan dengan sensitivitas case (jadi "m" dan "M" berbeda). Ini tidak sama dengan set karakter tabel.
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
;
Sangat bagus, Eric. Cukup tempel kode itu ke dalam baris perintah mysql, tekan kembali dan Anda mendapatkan set karakter dari setiap kolom di setiap tabel di setiap database :)
Jerry Krinock
1
@ JerryKrinock Anda mendapatkan setiap kolom dari database saat ini dan tidak ada jika tidak ada database yang dipilih.
Ortomala Lokni
24
Saya selalu hanya melihat SHOW CREATE TABLE mydatabase.mytable.
Untuk database, sepertinya Anda perlu melihatnya SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA.
dalam database mysql dapat memiliki set karakter default
James
3
select default_character_set_name from information_schema.schematatidak cukup karena Anda tidak dapat menentukan baris mana yang berkorelasi dengan database mana. Gunakan select default_character_set_name,schema_name from information_schema.schemataatau hanya: select*from information_schema.schemata.
Pacerier
Saya menggunakan SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G; Dan itu bekerja dengan baik :) Terima kasih!
Sankalp 6-15
23
Untuk melihat susunan default dari basis data:
USE db_name;SELECT@@character_set_database,@@collation_database;
@Pacerier apakah Anda benar-benar membandingkan jawaban saya dengan ini dengan benar?
sjas
15
Untuk basis data :
SHOW CREATEDATABASE"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
Kutipan diperlukan untuk "set karakter standar / collation selalu LATIN" di MySQL.
Pacerier
Kutipan diperlukan? Apakah Anda pernah menggunakan database MySQL? Semua orang tahu bahwa rangkaian karakter default / collation adalah latin1_swedish_cikarena Monty Widenius, pencipta MySQL, adalah Swedia dan tidak berpikir sebagai Gambaran Besar seperti yang seharusnya ketika ia mulai.
Spencer Williams
5
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/…Jawaban:
Begini cara saya melakukannya -
Untuk Skema (atau Basis Data - mereka adalah sinonim):
Untuk Tabel:
Untuk Kolom:
sumber
schemaname
mungkin hanya nama database.Untuk kolom :
sumber
latin1_swedish_ci
, charset tidak bisa menjadi hal lain selain itulatin1
. Jika collation adalahutf8mb4_general_ci
, charset tidak bisa menjadi hal lain selain ituutf8mb4
.Untuk basis data :
Lih halaman ini . Dan lihat manual MySQL
sumber
Untuk semua database yang Anda miliki di server:
Keluaran:
Untuk satu Database :
Keluaran:
Mendapatkan kolasi untuk Tabel :
ATAU - akan menampilkan SQL lengkap untuk membuat tabel:
mysql> show create table my_tablename
Mendapatkan susunan kolom :
keluaran:
sumber
type
? Saya memiliki mysql 5.7.9 dantype
menunjukkandata type
kolom bukancharacter set
. Beberapa sukaint(10)
varchar(255)
... dll dan tidakutf8
type
sebagaidata 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:
sumber
Untuk basis data :
Cukup gunakan perintah ini:
sumber
sumber
Saya selalu hanya melihat
SHOW CREATE TABLE mydatabase.mytable
.Untuk database, sepertinya Anda perlu melihatnya
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.sumber
select default_character_set_name from information_schema.schemata
tidak cukup karena Anda tidak dapat menentukan baris mana yang berkorelasi dengan database mana. Gunakanselect 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:
Untuk melihat susunan tabel:
Untuk melihat susunan kolom:
sumber
Untuk tabel dan kolom :
sumber
Untuk basis data :
Contoh output:
sumber
Untuk basis data :
Dalam membuat Database (MySQL), set / collation karakter default selalu LATIN, sebagai gantinya Anda telah memilih yang berbeda pada awalnya membuat database Anda
sumber
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:
sumber