Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jakie są zmiany w przypadku mysql 8 wyniku zestawu wierszy?

MySQL 8.0 zmienił implementację niektórych widoków w INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema/ mówi:

Robi się to z dobrych powodów, ale rozumiem, że zakłóciło to niektóre z twoich zapytań, gdy pobierasz wyniki w tablicach asocjacyjnych na podstawie nazwy kolumny.

Możesz zobaczyć definicję widoku deklarującą nazwę kolumny wyraźnie wielkimi literami:

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

Możesz obejść tę zmianę na kilka sposobów:

Możesz zadeklarować własne aliasy kolumn w przypadku, gdy chcesz, gdy wysyłasz zapytanie do widoku:

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

Możesz rozpocząć zwyczaj odpytywania kolumn wielkimi literami przed wersją 8.0. Oto test pokazujący wyniki w mojej piaskownicy 5.7:

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

Możesz też pobrać wyniki do tablicy nieasocjacyjnej i odwoływać się do kolumn według numeru kolumny, a nie według nazwy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyłączyć automatyczne zatwierdzanie dla klienta MySQL?

  2. Dlaczego STRAIGHT_JOIN tak drastycznie poprawia to zapytanie i co to oznacza, gdy jest napisane po słowie kluczowym SELECT?

  3. Przechowywanie identyfikatorów jako wartości oddzielonych przecinkami

  4. jak wybrać max mieszanej kolumny ciąg/int?

  5. Kiedy używać MongoDB