ฉันจะดูได้อย่างไรว่าตารางมีการเปรียบเทียบอะไรบ้าง? IE ฉันต้องการเห็น:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
ฉันจะดูได้อย่างไรว่าตารางมีการเปรียบเทียบอะไรบ้าง? IE ฉันต้องการเห็น:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
คำตอบ:
SHOW TABLE STATUS
แสดงข้อมูลเกี่ยวกับตารางรวมถึงการเปรียบเทียบ
ตัวอย่างเช่น SHOW TABLE STATUS where name like 'TABLE_NAME'
คำตอบข้างต้นนั้นดีมาก แต่ก็ไม่ได้ให้ตัวอย่างที่ช่วยให้ผู้ใช้ไม่ต้องค้นหาไวยากรณ์:
show table status like 'test';
test
ชื่อตารางอยู่ที่ไหน.
(แก้ไขตามความเห็นด้านล่าง)
คุณยังสามารถสอบถามINFORMATION_SCHEMA.TABLES
และรับการเปรียบเทียบสำหรับตารางเฉพาะ:
SELECT TABLE_SCHEMA
, TABLE_NAME
, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 't_name';
ที่ให้ผลลัพธ์ที่อ่านได้มากขึ้นในทางตรงกันข้ามกับSHOW TABLE STATUS
ที่มีข้อมูลที่ไม่เกี่ยวข้องจำนวนมาก
โปรดทราบว่าการจัดเรียงสามารถนำไปใช้กับคอลัมน์ได้ (ซึ่งอาจมีการเปรียบเทียบที่แตกต่างจากตารางเอง) ในการดึงการเรียงคอลัมน์สำหรับตารางใดตารางหนึ่งคุณสามารถสอบถามINFORMATION_SCHEMA.COLUMNS
:
SELECT TABLE_SCHEMA
, TABLE_NAME
, COLUMN_NAME
, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 't_name';
ใช้แบบสอบถามนี้:
SHOW CREATE TABLE tablename
คุณจะได้รับข้อมูลทั้งหมดที่เกี่ยวข้องกับตาราง
...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
ฉันเดาว่ามันอาจไม่แสดงการเปรียบเทียบหากตั้งเป็นค่าเริ่มต้นสำหรับฐานข้อมูลใน mysql / mariadb เวอร์ชันที่ใหม่กว่า
utf8
แต่แตกต่างกันเรียงVSutf8_general_ci
utf8_unicode_ci
ซึ่งอาจทำให้เกิดข้อความแสดงข้อผิดพลาดเช่นHY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
... ซึ่งเป็นข้อความที่นำฉันมาที่หน้านี้
คำสั่งนี้อธิบาย
mysql> use <database name>
mysql> show table status like '<table name>';
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| test | InnoDB | 11 | Dynamic | 52 | 315 | 16384 | 0 | 0 | 0 | 59 | NULL | 2020-04-16 23:00:00 | NULL | utf8mb4_unicode_ci | NULL | | |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.01 sec)