एक तालिका की mysql जाँच टकराव


106

मैं कैसे देख सकता हूं कि एक मेज पर क्या टकराव है? IE मैं देखना चाहता हूँ:

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

जवाबों:


159

SHOW TABLE STATUS टकराव सहित एक तालिका के बारे में जानकारी दिखाता है।

उदाहरण के लिए SHOW TABLE STATUS where name like 'TABLE_NAME'


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
मारियाबीडी 10.4 के लिए काम करता है
टार्टर

8

इस क्वेरी का उपयोग करें:

SHOW CREATE TABLE tablename

आपको तालिका से संबंधित सभी जानकारी मिल जाएगी।


3
शो निर्माण तालिका में समतलीकरण नहीं दिखाया जाएगा। आपको ऊपर बताए अनुसार SHOW TABLE STATUS का उपयोग करना होगा।
केटयूक

1
मेरे लिए mysql 5.5.52 में काम करता है। ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1मेरा अनुमान है कि यदि यह डेटाबेस के लिए mysql / maribb के बाद के संस्करणों में डिफ़ॉल्ट पर सेट है तो यह कोलाज को नहीं दिखा सकता है।
डेवलपर

1
@DeveloperChris आप जो दिखाते हैं वह चारसेट है, कॉलेशन नहीं। दो तालिकाओं में एक ही चारसेट हो सकता है utf8, लेकिन अलग-अलग कोलाज utf8_general_ciबनाम utf8_unicode_ci। यह त्रुटि संदेशों का कारण बन सकता है HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... जैसे वह संदेश जिसने मुझे इस पृष्ठ पर लाया है।
डेवी मोर्गन

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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.