MySQL 8.0 промени изпълнението на някои изгледи в INFORMATION_SCHEMA:
https://mysqlserverteam.com/mysql-8-0-improvements- към-информационна_схема/ казва:
Така че това се прави по основателни причини, но разбирам, че е разстроило някои от вашите заявки, когато извличате резултати в асоциативни масиви въз основа на името на колона.
Можете да видите, че дефиницията на изгледа декларира името на колоната изрично с главни букви:
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 |
+--------+
Или можете да извлечете резултати в неасоциативен масив и да препратите колони по номер на колона, вместо по име.