MySQL 8.0 đã thay đổi việc triển khai một số chế độ xem trong INFORMATION_SCHEMA:
https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema / nói:
Vì vậy, nó được thực hiện vì những lý do chính đáng, nhưng tôi hiểu rằng nó đã làm đảo lộn một số truy vấn của bạn khi bạn tìm nạp kết quả trong mảng liên kết dựa trên tên cột.
Bạn có thể thấy định nghĩa của dạng xem khai báo tên cột một cách rõ ràng bằng chữ hoa:
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
Bạn có thể khắc phục sự thay đổi theo một số cách:
Bạn có thể khai báo bí danh cột của riêng mình trong trường hợp bạn muốn khi truy vấn một chế độ xem:
mysql 8.0.14> SELECT MAXLEN AS `maxlen`
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
| 2 |
| 1 |
+--------+
Bạn có thể bắt đầu thói quen truy vấn các cột bằng chữ hoa trước 8.0. Đây là bài kiểm tra hiển thị kết quả trong hộp cát 5.7 của tôi:
mysql 5.7.24> SELECT MAXLEN
FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
| 2 |
| 1 |
+--------+
Hoặc bạn có thể tìm nạp kết quả vào một mảng không liên kết và tham chiếu các cột theo số cột, thay vì theo tên.