sql >> Database teknologi >  >> RDS >> Mysql

hvad er ændringerne i mysql 8 resultat rowset case?

MySQL 8.0 ændrede implementeringen af ​​nogle visninger i INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- til-informationsskema/ siger:

Så det bliver gjort af gode grunde, men jeg forstår, at det har forstyrret nogle af dine forespørgsler, når du henter resultater i associative arrays baseret på kolonnenavn.

Du kan se definitionen af ​​visningen erklærer kolonnenavnet eksplicit med store bogstaver:

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

Du kan omgå ændringen på et par måder:

Du kan erklære dine egne kolonnealiaser i det tilfælde, du ønsker, når du forespørger på en visning:

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

Du kan starte en vane med at forespørge kolonner med store bogstaver før 8.0. Her er en test, der viser resultaterne i min 5.7 sandbox:

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

Eller du kan hente resultater ind i en ikke-associativ matrix og henvise til kolonner efter kolonnenummer i stedet for efter navn.



  1. Java - Hvordan kalder man en orakelprocedure med brugerdefinerede typer?

  2. Proceduren forventer parameter, som ikke blev leveret

  3. Hvordan integrerer man Apache Spark med MySQL til læsning af databasetabeller som en spark-dataramme?

  4. MySQL-sortering til at gemme flersprogede data på ukendt sprog