Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

quais são as alterações no caso do conjunto de linhas de resultado do mysql 8?


O MySQL 8.0 alterou a implementação de algumas visualizações no INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema/ diz:

Portanto, isso está sendo feito por boas razões, mas entendo que isso perturbou algumas de suas consultas quando você busca resultados em matrizes associativas com base no nome da coluna.

Você pode ver que a definição da visão declara o nome da coluna explicitamente em letras maiúsculas:
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

Você pode contornar a mudança de duas maneiras:

Você pode declarar seus próprios aliases de coluna no caso desejado ao consultar uma visualização:
mysql 8.0.14> SELECT MAXLEN AS `maxlen` 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
|      2 |
|      1 |
+--------+

Você pode começar o hábito de consultar colunas em maiúsculas antes de 8.0. Aqui está um teste mostrando resultados na minha sandbox 5.7:
mysql 5.7.24> SELECT MAXLEN 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
|      2 |
|      1 |
+--------+

Ou você pode buscar resultados em uma matriz não associativa e referenciar colunas pelo número da coluna, em vez de pelo nome.