sql >> Databasteknik >  >> RDS >> Mysql

vilka är ändringarna i mysql 8 resultat rowset case?

MySQL 8.0 ändrade implementeringen av vissa vyer i INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- till-informationsschema/ säger:

Så det görs av goda skäl, men jag förstår att det har stört några av dina frågor när du hämtar resultat i associativa arrayer baserat på kolumnnamn.

Du kan se definitionen av vyn som deklarerar kolumnnamnet uttryckligen med versaler:

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 kringgå förändringen på ett par sätt:

Du kan deklarera dina egna kolumnalias i det fall du vill när du frågar en vy:

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

Du kan börja vana att fråga kolumner med versaler före 8.0. Här är ett test som visar resultat i min 5.7-sandlåda:

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

Eller så kan du hämta resultat till en icke-associativ matris och referera till kolumner efter kolumnnummer istället för efter namn.



  1. Vad är det korrekta och säkra/säkra sättet att hålla en användare inloggad? småkakor? session? PHP &&MYSQL

  2. Hur dumpar jag MySQL-fil utan främmande nycklar via kommandoraden?

  3. Villkorligt mySQL-uttalande. Om sant UPPDATERA, om falskt INFOGA

  4. Prestanda för sys.partitioner