mysql ตรวจสอบการเรียงตาราง


106

ฉันจะดูได้อย่างไรว่าตารางมีการเปรียบเทียบอะไรบ้าง? IE ฉันต้องการเห็น:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+

คำตอบ:



78

คำตอบข้างต้นนั้นดีมาก แต่ก็ไม่ได้ให้ตัวอย่างที่ช่วยให้ผู้ใช้ไม่ต้องค้นหาไวยากรณ์:

show table status like 'test';

testชื่อตารางอยู่ที่ไหน.

(แก้ไขตามความเห็นด้านล่าง)


14

คุณยังสามารถสอบถาม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';

2
ใช้ได้กับ mariaDB 10.4
Tarator

8

ใช้แบบสอบถามนี้:

SHOW CREATE TABLE tablename

คุณจะได้รับข้อมูลทั้งหมดที่เกี่ยวข้องกับตาราง


3
SHOW CREATE TABLE จะไม่แสดงการเปรียบเทียบ คุณต้องใช้สถานะตารางแสดงตามที่อธิบายไว้ข้างต้น
KateYoak

1
ใช้งานได้กับฉันใน mysql 5.5.52 ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1ฉันเดาว่ามันอาจไม่แสดงการเปรียบเทียบหากตั้งเป็นค่าเริ่มต้นสำหรับฐานข้อมูลใน mysql / mariadb เวอร์ชันที่ใหม่กว่า
DeveloperChris

1
@DeveloperChris สิ่งที่คุณแสดงคือชุดอักขระไม่ใช่การเปรียบเทียบ ตารางที่สองอาจจะมี charset เดียวกันutf8แต่แตกต่างกันเรียงVSutf8_general_ci utf8_unicode_ciซึ่งอาจทำให้เกิดข้อความแสดงข้อผิดพลาดเช่นHY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... ซึ่งเป็นข้อความที่นำฉันมาที่หน้านี้
Dewi Morgan

0

คำสั่งนี้อธิบาย

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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.