MySQL 8.0 hat die Implementierung einiger Ansichten im INFORMATION_SCHEMA geändert:
https://mysqlserverteam.com/mysql-8-0-verbesserungen- to-information_schema/ sagt:
Es wird also aus guten Gründen getan, aber ich verstehe, dass es einige Ihrer Abfragen gestört hat, wenn Sie Ergebnisse in assoziativen Arrays basierend auf Spaltennamen abrufen.
Sie können sehen, dass die Definition der Ansicht den Spaltennamen explizit in Großbuchstaben deklariert:
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
Sie können die Änderung auf verschiedene Arten umgehen:
Sie können Ihre eigenen Spaltenaliase deklarieren, wenn Sie eine Ansicht abfragen:
mysql 8.0.14> SELECT MAXLEN AS `maxlen`
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
| 2 |
| 1 |
+--------+
Vor 8.0 konnten Sie sich angewöhnen, Spalten in Großbuchstaben abzufragen. Hier ist ein Test, der Ergebnisse in meiner 5.7-Sandbox zeigt:
mysql 5.7.24> SELECT MAXLEN
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
| 2 |
| 1 |
+--------+
Oder Sie könnten Ergebnisse in ein nicht-assoziatives Array abrufen und Spalten nach Spaltennummer statt nach Namen referenzieren.