MySQL 8.0 memang mengubah implementasi beberapa tampilan di INFORMATION_SCHEMA:
https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema/ mengatakan:
Jadi ini dilakukan untuk alasan yang baik, tetapi saya memahami bahwa ini telah mengganggu beberapa kueri Anda saat Anda mengambil hasil dalam array asosiatif berdasarkan nama kolom.
Anda dapat melihat definisi tampilan yang menyatakan nama kolom secara eksplisit dalam huruf besar:
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
Anda dapat mengatasi perubahan dengan beberapa cara:
Anda dapat mendeklarasikan alias kolom Anda sendiri jika Anda menginginkan tampilan:
mysql 8.0.14> SELECT MAXLEN AS `maxlen`
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
| 2 |
| 1 |
+--------+
Anda dapat memulai kebiasaan menanyakan kolom dalam huruf besar sebelum 8.0. Berikut tes yang menunjukkan hasil di kotak pasir 5.7 saya:
mysql 5.7.24> SELECT MAXLEN
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
| 2 |
| 1 |
+--------+
Atau Anda dapat mengambil hasil ke dalam larik non-asosiatif, dan mereferensikan kolom menurut nomor kolom, bukan berdasarkan nama.