sql >> Base de Datos >  >> RDS >> Mysql

¿Cuáles son los cambios en el caso del conjunto de filas de resultados de mysql 8?

MySQL 8.0 cambió la implementación de algunas vistas en INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- a-info_esquema/ dice:

Entonces, se está haciendo por buenas razones, pero entiendo que ha alterado algunas de sus consultas cuando obtiene resultados en matrices asociativas basadas en el nombre de la columna.

Puede ver que la definición de la vista declara el nombre de la columna explícitamente en mayú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

Puede solucionar el cambio de varias formas:

Puede declarar sus propios alias de columna en el caso que desee cuando consulta una vista:

mysql 8.0.14> SELECT MAXLEN AS `maxlen` 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
|      2 |
|      1 |
+--------+

Antes de la versión 8.0, podría adquirir el hábito de consultar las columnas en mayúsculas. Aquí hay una prueba que muestra los resultados en mi sandbox 5.7:

mysql 5.7.24> SELECT MAXLEN 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
|      2 |
|      1 |
+--------+

O podría obtener los resultados en una matriz no asociativa y hacer referencia a las columnas por número de columna, en lugar de por nombre.