Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

apa perubahan dalam kasus baris hasil mysql 8?

MySQL 8.0 memang mengubah implementasi beberapa tampilan di INFORMATION_SCHEMA:

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

Jadi ini dilakukan untuk alasan yang baik, tetapi saya memahami bahwa ini telah mengganggu beberapa kueri Anda saat Anda mengambil hasil dalam array asosiatif berdasarkan nama kolom.

Anda dapat melihat definisi tampilan yang menyatakan nama kolom secara eksplisit dalam huruf besar:

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

Anda dapat mengatasi perubahan dengan beberapa cara:

Anda dapat mendeklarasikan alias kolom Anda sendiri jika Anda menginginkan tampilan:

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

Anda dapat memulai kebiasaan menanyakan kolom dalam huruf besar sebelum 8.0. Berikut tes yang menunjukkan hasil di kotak pasir 5.7 saya:

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

Atau Anda dapat mengambil hasil ke dalam larik non-asosiatif, dan mereferensikan kolom menurut nomor kolom, bukan berdasarkan nama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Satu ke Banyak MySQL

  2. Solusi untuk pernyataan dinamis dalam prosedur tersimpan yang dipanggil dari pemicu

  3. kueri untuk menghapus semua karakter setelah koma terakhir dalam string

  4. Setel ulang kata sandi root MySQL menggunakan pernyataan ALTER USER setelah menginstal di Mac

  5. Kasus permintaan regex MySQL tidak sensitif