Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

những thay đổi trong trường hợp hàng tập kết quả mysql 8 là gì?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL SERVER - Một mẹo xử lý SQL động để tránh tấn công SQL Injection?

  2. Nhóm mệnh đề WHERE trong Codeigniter

  3. Tính tổng số giờ từ trình theo dõi thời gian đến lịch theo ngày

  4. Mục đích của SQLAlchemy trên MySQLdb

  5. Cách tính chênh lệch giữa hai ngày được làm tròn thành giờ