जवाबों:
यहाँ है कि मैं यह कैसे करूँगा -
स्कीमा (या डेटाबेस - वे समानार्थी हैं) के लिए:
SELECT default_character_set_name FROM information_schema.SCHEMATA
WHERE schema_name = "schemaname";
टेबल्स के लिए:
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";
कॉलम के लिए:
SELECT character_set_name FROM information_schema.`COLUMNS`
WHERE table_schema = "schemaname"
AND table_name = "tablename"
AND column_name = "columnname";
schemaname
सिर्फ डेटाबेस का नाम हो सकता है।
के लिए कॉलम :
SHOW FULL COLUMNS FROM table_name;
latin1_swedish_ci
, तो चारसेट के अलावा कुछ और नहीं हो सकता है latin1
। यदि टकराव होता है utf8mb4_general_ci
, तो चारसेट के अलावा कुछ और नहीं हो सकता है utf8mb4
।
के लिए डेटाबेस :
USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";
सी एफ यह पेज । और MySQL मैनुअल की जाँच करें
सर्वर पर आपके सभी डेटाबेस के लिए:
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 |
| my_database | latin1 | latin1_swedish_ci |
...
+----------------------------+---------+--------------------+
एक के लिए एक डाटाबेस :
mysql> USE my_database;
mysql> show variables like "character_set_database";
आउटपुट:
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| character_set_database | latin1 |
+----------------------------+---------+
टेबल्स के लिए टकराव हो रही है :
mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';
या - तालिका बनाने के लिए पूर्ण SQL आउटपुट करेगा:
mysql> show create table my_tablename
स्तंभों का टकराना :
mysql> SHOW FULL COLUMNS FROM my_tablename;
उत्पादन:
+---------+--------------+--------------------+ ....
| field | type | collation |
+---------+--------------+--------------------+ ....
| id | int(10) | (NULL) |
| key | varchar(255) | latin1_swedish_ci |
| value | varchar(255) | latin1_swedish_ci |
+---------+--------------+--------------------+ ....
type
? मैं mysql 5.7.9 है और type
दिखाने के data type
स्तंभ की नहीं character set
। कुछ जैसे int(10)
varchar(255)
... आदि और नहींutf8
type
जैसा कि data type
@MTK दिखाता है, शायद ऊपर "आउटपुट:" अनुभाग में एक कॉपी पेस्ट त्रुटि है।
के लिए टेबल :
SHOW TABLE STATUS
सभी तालिकाओं को सूचीबद्ध करेगा।
फ़िल्टर का उपयोग करें:
SHOW TABLE STATUS where name like 'table_123';
TABLE_SCHEMA का चयन करें, तालिका नाम, CCSA.CHARACTER_SET_NAME DEFAULT_CHAR_SET के रूप में, आम नाम, COLUMN_TYPE, C.CHARACTER_SET_NAME T_shema.TABLES के रूप में T से जानकारी JOIN info_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME) के रूप में CCSA के रूप में JOIN जानकारी_schema.COLLATION_CHARACTER_SET_APPLICABILITY ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME) जहां TABLE_SCHEMA = SCHEMA () और C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext') TABLE_SCHEMA द्वारा आदेश, तालिका नाम, आम नाम ;
मैं हमेशा सिर्फ देखता हूं SHOW CREATE TABLE mydatabase.mytable
।
डेटाबेस के लिए, ऐसा लगता है कि आपको देखने की आवश्यकता है SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
।
select default_character_set_name from information_schema.schemata
पर्याप्त नहीं है क्योंकि आप यह नहीं बता सकते हैं कि कौन सी पंक्ति किस डेटाबेस से संबद्ध है। उपयोग select default_character_set_name,schema_name from information_schema.schemata
या बस select*from information_schema.schemata
:।
SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
और यह महान काम किया :) धन्यवाद!
डेटाबेस का डिफ़ॉल्ट टकराव देखने के लिए:
USE db_name;
SELECT @@character_set_database, @@collation_database;
तालिका का टकराव देखने के लिए:
SHOW TABLE STATUS where name like 'table_name';
स्तंभों का टकराव देखने के लिए:
SHOW FULL COLUMNS FROM table_name;
के लिए टेबल और कॉलम :
show create table your_table_name
के लिए डेटाबेस :
SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
उदाहरण आउटपुट:
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>
के लिए डेटाबेस :
SHOW CREATE DATABASE "DB_NAME_HERE";
एक डेटाबेस (MySQL) बनाने में, डिफ़ॉल्ट चरित्र सेट / कोलाज हमेशा LATIN होता है, इसके बजाय आपने अपने डेटाबेस में शुरू में एक अलग चयन किया है।
latin1_swedish_ci
टकराव इसलिए है क्योंकि MySQL के निर्माता मोंटी विडेनियस स्वीडिश हैं और बिग पिक्चर के रूप में नहीं सोच रहे थे जैसा कि उन्हें शुरू करना चाहिए था।
जैसा कि कई पहले लिखा था, कॉलम की जानकारी प्राप्त करने के लिए SHOW FULL COLUMNS पसंदीदा तरीका होना चाहिए। क्या गायब है यह सीधे मेटाडेटा टेबल तक पहुंचने के बाद चारसेट प्राप्त करने का एक तरीका है:
SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
SHOW CREATE TABLE
, जैसा कि stackoverflow.com/questions/57628217/…