MySQL 8.0 ने INFORMATION_SCHEMA में कुछ दृश्यों के कार्यान्वयन को बदल दिया:
https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema/ कहते हैं:
तो यह अच्छे कारणों से किया जा रहा है, लेकिन मैं समझता हूं कि जब आप कॉलम नाम के आधार पर सहयोगी सरणी में परिणाम प्राप्त करते हैं तो इससे आपके कुछ प्रश्न परेशान हो जाते हैं।
आप देख सकते हैं कि दृश्य की परिभाषा स्पष्ट रूप से अपरकेस में कॉलम नाम की घोषणा करती है:
mysql 8.0.14> SHOW CREATE VIEW CHARACTER_SETS\G
*************************** 1. row ***************************
View: CHARACTER_SETS
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`mysql.infoschema`@`localhost` SQL SECURITY DEFINER VIEW `CHARACTER_SETS` AS
select
`cs`.`name` AS `CHARACTER_SET_NAME`,
`col`.`name` AS `DEFAULT_COLLATE_NAME`,
`cs`.`comment` AS `DESCRIPTION`,
`cs`.`mb_max_length` AS `MAXLEN` -- delimited column explicitly uppercase
from (`mysql`.`character_sets` `cs`
join `mysql`.`collations` `col` on((`cs`.`default_collation_id` = `col`.`id`)))
character_set_client: utf8
collation_connection: utf8_general_ci
आप कुछ तरीकों से बदलाव के आसपास काम कर सकते हैं:
जब आप किसी दृश्य को क्वेरी करते हैं तो आप अपने स्वयं के कॉलम उपनाम घोषित कर सकते हैं:
mysql 8.0.14> SELECT MAXLEN AS `maxlen`
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
| 2 |
| 1 |
+--------+
आप 8.0 से पहले अपरकेस में कॉलम पूछने की आदत शुरू कर सकते हैं। मेरे 5.7 सैंडबॉक्स में परिणाम दिखाने वाला एक परीक्षण यहां दिया गया है:
mysql 5.7.24> SELECT MAXLEN
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
| 2 |
| 1 |
+--------+
या आप परिणामों को एक गैर-एसोसिएटिव ऐरे में ला सकते हैं, और संदर्भ कॉलम नाम के बजाय कॉलम संख्या के आधार पर प्राप्त कर सकते हैं।