Apa mysql 8 sudah usang?

Perubahan Tidak Kompatibel. Layanan pfs_plugin_table, tidak digunakan lagi sejak MySQL 8. 0. 14, dihapus dalam rilis ini

Plugin atau komponen yang menggunakan layanan ini harus diperbarui untuk menggunakan pfs_plugin_table_v1 dan pfs_plugin_column_* sebagai gantinya. (Bug #34361827)

  • Perubahan Penting; . Peristiwa log kueri yang difilter oleh database default kapan pun atau digunakan termasuk XA START, XA END,

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    0, dan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    1 (tetapi bukan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    2 atau
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    3), terlepas dari format log biner

    Ini dapat menyebabkan salah satu masalah yang tercantum di sini

    • Ketika XA START atau XA END difilter, urutan pernyataan XA dalam bagian pertama transaksi menjadi tidak valid, yang membuat replika berhenti dengan kesalahan

    • Ketika XA START dan XA END dipertahankan sementara

      mysqlcheck --fix-db-names --fix-table-names --all-databases
      
      0 atau
      mysqlcheck --fix-db-names --fix-table-names --all-databases
      
      1 disaring, maka transaksi dapat tetap dalam status siap tanpa batas waktu pada replika

    Untuk mencegah salah satu dari masalah ini terjadi, kami tidak lagi memfilter XA START, XA END,

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    0, atau
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    1 pernyataan oleh database default dengan --replicate-do-db atau
    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    5. (Bug #106201, Bug #33764808)

  • InnoDB. Setelah memutakhirkan ke rilis yang mendukung versi baris untuk kolom yang ditambahkan atau dihapus menggunakan

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    6, kegagalan terjadi selama operasi
    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    7 instan pada tabel dengan kolom yang dapat dibatalkan dan kolom yang ditambahkan secara instan. (Bug #34488482)

  • InnoDB. Menambahkan kolom virtual dan menghapus kolom dalam pernyataan

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    8 yang sama menimbulkan kegagalan pernyataan debug yang tidak valid. (Bug #34467592)

  • InnoDB. Posisi fisik kolom tidak disetel dengan benar setelah menjatuhkan kolom dan mengganti nama kolom yang ada menjadi nama kolom yang dijatuhkan. (Bug #34463089)

  • InnoDB. Kesalahan Valgrind yang terdeteksi di

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    9 telah diperbaiki. (Bug #34327575)

  • InnoDB. Operasi DDL pada tabel terpartisi yang rusak memunculkan kegagalan pernyataan. (Bug #34293555)

  • InnoDB. Pelanggaran urutan kait blok indeks selama pengambilan sampel histogram memblokir penyisipan bersamaan dan dapat menyebabkan kegagalan kebuntuan. (Bug #34282448, Bug #34174927, Bug #107299)

  • InnoDB. Operasi

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    _8 yang dijalankan saat operasi pemuatan data sedang berlangsung menimbulkan kegagalan pernyataan. (Bug #34267618)

  • InnoDB. pfs_plugin_table1 kebocoran memori selama inisialisasi server MySQL, yang diidentifikasi oleh pembuatan Address Sanitizer (ASAN), telah diperbaiki. (Bug #34156050)

  • InnoDB. Selama pemulihan, objek tablespace yang terkait dengan halaman undo tablespace terenkripsi yang diambil dari disk tidak berisi kunci enkripsi yang diperlukan untuk mendekripsi halaman, mengakibatkan kegagalan. (Bug #34148143)

  • InnoDB. Dalam build debug, pemindaian b-tree yang menurun memunculkan kegagalan pernyataan debug. (Bug #34144951)

  • InnoDB. Fungsi pfs_plugin_table_2 gagal menangani argumen yang tidak valid. (Bug #34052884)

  • InnoDB. Kolom yang ditambahkan menggunakan pfs_plugin_table_3 terlihat dalam tampilan baca yang dibuat sebelum operasi DDL yang menambahkan kolom. (Bug #33937504)

  • InnoDB. Terjadi kegagalan saat memutakhirkan instans MySQL dengan MySQL 5. 6 direktori data berisi tabel buatan pengguna dengan ID tabel tertentu. Penetapan ID tabel tersebut menghasilkan penugasan ID tabel kamus data yang bertentangan saat memutakhirkan dari MySQL 5. 7 hingga MySQL 8. 0

    Terima kasih kepada Rahul Malik atas kontribusinya. (Bug #33919635)

  • InnoDB. Blok buffer yang berisi halaman tabel sementara intrinsik dipindahkan selama penelusuran halaman, menyebabkan kegagalan pernyataan. (Bug #33715694)

  • InnoDB. Menjatuhkan tabel dengan tablespace yang dibuang menyebabkan kegagalan pernyataan. (Bug #33232978)

  • InnoDB. Pembacaan I/O halaman tidak selesai sebelum shutdown mencapai fase flush menyebabkan kegagalan pernyataan dalam kasus di mana halaman telah mengubah penggabungan buffer untuk diselesaikan setelah pembacaan I/O. (Bug #33192496)

  • InnoDB. Pelanggaran urutan kait indeks di pfs_plugin_table4 menyebabkan kegagalan pernyataan. (Bug #32912868)

  • InnoDB. Operasi pfs_plugin_table_5 gagal membebaskan mutex yang diperoleh dalam kasus tertentu. (Bug #107858, Bug #34380370)

  • InnoDB. Dalam build debug, mengimpor tablespace tanpa file pfs_plugin_table6 untuk tabel dengan kolom yang ditambahkan atau dihapus secara instan menimbulkan kegagalan pernyataan. (Bug #107517, Bug #34307874)

  • InnoDB. Kebocoran memori potensial pada fungsi pfs_plugin_table_7 telah diperbaiki

    Terima kasih kepada Alex Xing atas kontribusinya. (Bug #106952, Bug #34051207)

  • InnoDB. Terjadi kegagalan pernyataan debug saat mengulangi penghapusan ruang selama pemulihan. (Bug #103482, Bug #32819101)

  • InnoDB. Pesan startup pfs_plugin_table_1 yang menentukan jumlah kumpulan objek telah dihapus untuk menghindari kebingungan dengan jumlah instance kumpulan buffer. (Bug #80248, Bug #22653060)

  • Mempartisi. Tabel yang dipartisi tidak dipartisi ulang seperti yang diharapkan ketika pernyataan

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    8 bertindak untuk mengubah set karakter dari salah satu kolomnya. Akar penyebabnya adalah, saat menentukan apakah perubahan rangkaian karakter dapat dilakukan sebagai operasi perubahan di tempat, kami tidak mempertimbangkan apakah ada kolom yang terpengaruh oleh perubahan rangkaian karakter yang merupakan bagian dari ekspresi partisi tabel. Karena perubahan seperti itu dapat menyebabkan partisi ulang tabel, itu tidak dapat dilakukan di tempat. Sekarang ketika perubahan dalam rangkaian karakter direncanakan, kami juga memeriksa apakah ini memengaruhi kolom apa pun yang merupakan bagian dari ekspresi partisi; . (Bug #106884, Bug #34031693)

  • Replikasi. Memperbaiki kesalahan internal dalam penanganan informasi replikasi. (Bug #34214416)

  • Replikasi. Ketika satu peristiwa menyebabkan beberapa pembaruan ke baris tabel yang sama pada replika, perubahan tidak dapat diterapkan jika replika memiliki kunci utama pada tabel yang tidak ada di sumbernya. Algoritme pencarian baris berbasis hash sekarang beroperasi dalam situasi ini bahkan jika kunci utama ada di tabel replika. (Bug #34114296)

  • Replikasi. Saat satu pernyataan menghasilkan beberapa peristiwa tulis untuk tabel berbeda pada replika, kolom penambahan otomatis tambahan di tabel replika hanya dibersihkan untuk peristiwa terakhir yang dibuat. Mereka tidak dibersihkan sama sekali jika acara terakhir tidak melibatkan tabel dengan kolom penambahan otomatis tambahan. Proses pembersihan sekarang selalu dilakukan untuk beberapa peristiwa penulisan. (Bug #34095290)

  • Replikasi. Kesalahan yang menyesatkan dikembalikan ke klien jika variabel sistem pfs_plugin_table_v10 disetel, dan waktu tunggu perubahan tampilan habis. Kesalahan, dan kesalahan terkait, telah diperbarui sehingga tidak menunjukkan bahwa nilai yang diberikan untuk variabel sistem salah. (Bug #34091087)

  • Replikasi. Kolom FILTER_RULE di tabel Skema Kinerja pfs_plugin_table_v11 menunjukkan data yang salah untuk filter yang aturannya tidak ada. Tabel sekarang menampilkan string kosong dalam situasi ini. (Bug #33885484)

  • Replikasi. Itu mungkin dalam beberapa kasus yang jarang terjadi kesalahan pembilasan atau sinkronisasi untuk server untuk mencoba memperbarui titik akhir log biner menggunakan nilai yang tidak valid untuk file dan posisi di dalam file, yang mengarah ke perilaku yang tidak ditentukan

    Untuk mengatasi masalah ini, kami sekarang memanggil fungsi internal pfs_plugin_table_v12, pfs_plugin_table_v13) hanya ketika parameter file dan posisi diketahui valid. (Bug #33818238)

  • Replikasi. Operasi yang menggunakan SID dari peristiwa log GTID yang tidak valid terkadang menyebabkan perilaku yang tidak terdefinisi

    Kami mengatasi masalah ini dengan memastikan bahwa SID selalu diinisialisasi, bahkan jika itu milik peristiwa log GTID yang tidak valid. (Bug #33784022)

  • Replikasi. Perhitungan panjang maksimum variabel status (pfs_plugin_table_v14) tidak dilakukan dengan benar

    Masalah yang diperbaiki dalam perbaikan ini tercantum di sini

    • dan membutuhkan 2 byte (satu untuk tipe ID, satu untuk variabel)

    • Panjang maksimum dihitung sebagai 255 bukannya pfs_plugin_table_v18

    • Byte tambahan (masing-masing) diperlukan untuk menyimpan panjang variabel pengguna, jumlah ID basis data yang disimpan di pfs_plugin_table_v1_9, dan jenis mikrodetik

    Selain itu, pfs_plugin_column_*_0, yang sebenarnya tidak digunakan, telah dihapus. (Bug #33713071)

  • Replikasi. Pada platform 32-bit, pengaturan ke pfs_plugin_column_*2 (pfs_plugin_column_*3) atau lebih memiliki efek menyebabkan semua log biner dibersihkan sebelum waktu yang ditentukan berlalu. (Bug #33670457)

  • Replikasi. Jika perubahan konfigurasi grup sedang berlangsung, anggota baru tidak dapat bergabung. Pesan kesalahan yang dikeluarkan dalam skenario ini sekarang menyatakan operasi apa yang sedang berlangsung, seperti pemilihan utama, pertukaran antara mode primer tunggal dan mode multi-primer, atau perubahan protokol komunikasi grup. (Bug #32766981)

  • Replikasi. Ketika utas pengirim log biner menunggu pembaruan dengan detak jantung diaktifkan, kadang-kadang melewatkan sinyal pembaruan, sehingga perubahan tidak direplikasi hingga sinyal berikutnya dikeluarkan dan diperhatikan oleh utas

    Terima kasih kami kepada Facebook atas kontribusinya. (Bug #104491, Bug #33176377)

  • Replikasi Grup. Pernyataan pfs_plugin_column_*4 dan pfs_plugin_column_*5 diizinkan untuk saluran aplikasi Replikasi Grup (pfs_plugin_column_*6), tetapi menghentikan dan memulai saluran secara manual dapat menyebabkan anggota online grup replikasi tidak dapat melakukan transaksi jarak jauh. Pernyataan ini tidak lagi dapat digunakan untuk saluran saat Replikasi Grup berjalan. (Bug #34231291)

  • Replikasi Grup. Kebuntuan dapat terjadi saat Replikasi Grup dimulai pada contoh server, tetapi kesalahan seperti konfigurasi yang tidak kompatibel menyebabkan anggota segera keluar. Registri layanan sekarang mengelola pendaftaran dan deregistrasi layanan dengan proses alternatif yang menghindari masalah tersebut. (Bug #34194893)

  • Replikasi Grup. Dalam ClusterSet InnoDB, jika terjadi kebuntuan pesanan komit dan percobaan ulang berikutnya, Replikasi Grup dapat membatalkan transaksi selama sertifikasi dengan kesalahan yang menyatakan bahwa GTID untuk transaksi tersebut telah digunakan. Kesalahan sekarang hanya dikembalikan jika GTID telah digunakan pada instance server dan juga di grup. (Bug #34157846)

  • Replikasi Grup. Setelah memeriksa komit transaksi tidak memiliki konflik dan dalam urutan yang benar, Replikasi Grup melaporkan kembali ke sesi komit. Saat utas penjadwal acara dimulai, Replikasi Grup tidak dapat menemukan sesi komitmen, sehingga anggota memasuki status pfs_plugin_column_*7 dan keluar dari grup. Prosedur untuk menemukan sesi komit diperluas untuk menemukan utas daemon, seperti yang digunakan untuk memulai utas penjadwal acara. Terima kasih kepada Lou Shuai atas kontribusinya. (Bug #107635, Bug #34312482)

  • Ketika variabel sistem pfs_plugin_column_*8 diaktifkan untuk meningkatkan kinerja untuk replikasi semisinkron, plugin pfs_plugin_column_*9 tidak dapat digunakan di server karena masalah penanganan pemberitahuan. Masalahnya sekarang telah diperbaiki. (Bug #34549470)

  • String yang berisi banyak angka nol di depan salah ditandai sebagai meluap saat mengonversinya menjadi desimal, menyebabkan nilai kembali menjadi nilai desimal maksimum untuk presisi dan skala yang diberikan

    Kami memperbaikinya dengan mengganti semua nol di depan dalam kasus tersebut dengan satu --replicate-do-db0, sebelum konversi. (Bug #34479194)

  • Perbedaan antara fungsi --replicate-do-db1 pada Windows dan fungsi --replicate-do-db2 pada sistem mirip Unix menyebabkan kode kumpulan utas pada Windows menganggap deskriptor atau soket file tidak valid sebagai siap untuk I/O. (Bug #34478731)

  • Jika instance MySQL di MySQL 8. 0. 27 atau lebih bergabung dengan grup replikasi yang berjalan di MySQL 8. 0. 26, tindakan anggota --replicate-do-db_3 dihapus agar sesuai dengan konfigurasi tindakan anggota untuk anggota grup lainnya. Namun, jika instans ditingkatkan untuk dijalankan di MySQL 8. 0. 27 atau lebih, tindakan anggota tidak dipulihkan kecuali --replicate-do-db4 dikeluarkan di server yang kemudian mem-bootstrap grup. Bergabung dengan anggota sekarang periksa apakah tindakan anggota --replicate-do-db3 tersedia untuk mereka, dan tambahkan ke konfigurasi tindakan anggota mereka jika itu. (Bug #34464526)

  • Ekspresi konstanta yang digunakan dalam daftar kueri --replicate-do-db_6 tidak selalu ditangani dengan benar oleh server. (Bug #34418412)

  • Menambahkan pemeriksaan kesalahan yang hilang di --replicate-do-db7. (Bug #34416304)

  • Beberapa fungsi string yang menerima banyak argumen tidak memproses semua argumen dengan benar. (Bug #34393009)

  • Kolom dengan tipe --replicate-do-db_8 dibuat untuk tabel sementara yang menampung --replicate-do-db9 hasilnya tidak selalu dijamin dengan panjang yang benar. (Bug #34370933)

  • Jika tampilan (--replicate-ignore-db_0) mengakses tampilan lain (--replicate-ignore-db1), dan jika --replicate-ignore-db1 dibuat ulang, maka --replicate-ignore-db3 melaporkan kesalahan tampilan yang tidak valid. Masalah ini dapat terjadi hanya jika pengguna diberi hak istimewa global dengan peran, tetapi bukan hak istimewa tingkat tabel. Itu diperbaiki dengan memeriksa hak istimewa global jika hak istimewa tingkat tabel tidak ada. (Bug #34341533)

  • Kueri pada tabel Skema Kinerja --replicate-ignore-db4 dapat gagal karena konflik antar utas. Masalahnya sekarang telah diperbaiki. (Bug #34337673)

  • Menambahkan pemeriksaan kesalahan yang hilang setelah evaluasi item saat membaca tabel const. (Bug #34327798)

  • Reparsing dan kloning tabel turunan tidak selalu ditangani dengan benar dalam kasus tertentu. (Bug #34317258, Bug #34408241)

  • Mendorong kondisi ke tabel turunan dengan operasi yang ditetapkan saat ada beberapa blok kueri tidak selalu ditangani dengan benar. (Bug #34306361)

  • Kegagalan startup selama pembuatan kunci RSA mengakibatkan kunci kosong atau tidak lengkap. Kunci sekarang dibuat dengan cara fail-safe. (Bug #34274914)

  • Saat membandingkan dua nilai string dengan klausa --replicate-ignore-db5 eksplisit, ini harus memiliki susunan yang sama, jika tidak, perbandingan harus ditolak, tetapi ini tidak selalu ditegakkan

    Untuk informasi lebih lanjut, lihat Coercibility Collation dalam Ekspresi. (Bug #34274525)

  • Operasi --replicate-ignore-db_6 yang dibaca dari log biner gagal dijalankan di server replika karena kesalahan sintaks yang tidak terduga. (Bug #34178823)

  • Ketidakcocokan presisi kadang-kadang dapat terjadi dalam operasi ke --replicate-ignore-db8 pada nilai bilangan bulat, saat menggunakan --replicate-ignore-db9 sebagai kebalikan dari XA START0 (lihat Pernyataan SELECT)

    Untuk XA START_0, nilai dipotong sesuai dengan presisi inheren dari nilai floating point 32 bit IEEE, yang merupakan perilaku yang benar. Dengan --replicate-ignore-db_9, presisi dari nilai integer asli dipertahankan;

    Kami memperbaikinya dengan membedakan tipe nilai floating point saat menyalin nilai tersebut ke tabel sementara, sehingga nilai presisi ganda disimpan sebagai tipe double dan nilai presisi tunggal disimpan sebagai tipe float. (Bug #34167787)

  • Dieksekusi XA START_3 pada sebagian besar kode sumber, dan memperbaiki kesalahan ejaan yang dilaporkan dalam komentar kode. (Bug #34163323)

  • Dalam kasus tertentu, saat memeriksa penunjuk fungsi internal sebelum dipanggil, penunjuk yang salah telah divalidasi. (Bug #34134738)

  • Jalur akses dan iterator untuk akses XA START4 memiliki anggota XA START5 untuk menentukan apakah akan menggunakan pemindaian indeks yang dipesan. Karena XA START_4 selalu mengembalikan paling banyak satu baris, tidak perlu mengurutkannya; . (Bug #34122706)

  • Memperbaiki opsi CMake agar juga berfungsi saat memuat pengujian unit. (Bug #34117732)

    Referensi. Lihat juga. Bug #29925009

  • Menghapus dukungan tautan 'emas' GNU, termasuk opsi CMake USE_LD_GOLD terkait. (Bug #34094324)

  • Direktori yang dibuat secara manual di MySQL 5. 7 direktori data (diperlakukan sebagai direktori skema di MySQL 5. 7) dengan karakter khusus dalam nama direktori atau skema dan tabel yang dibuat dengan karakter khusus dalam namanya menggunakan awalan XA START9 menyebabkan kegagalan DDL setelah memutakhirkan ke MySQL 8. 0. Di MYSQL8. 0, karakter khusus diganti dengan karakter tanda tanya (XA END0) saat nama objek ditambahkan ke kamus data. Ketidakcocokan nama menyebabkan operasi DDL pada objek yang terpengaruh gagal. Pemutakhiran sekarang berhenti dengan kesalahan jika ditemukan skema dan nama tabel yang tidak valid

    Di MySQL5. 7, Anda dapat memperbarui skema dan nama tabel yang tidak valid menjadi penyandian yang valid menggunakan mysqlcheck. Untuk mengidentifikasi nama yang tidak valid, jalankan

    mysqlcheck --check-upgrade --all-databases
    

    Untuk memperbaiki nama yang tidak valid, jalankan

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    

    Di MySQL5. 7, nama direktori yang memiliki karakter khusus juga dapat diperbarui untuk menggunakan penyandian yang valid menggunakan sintaks SQL berikut

    ALTER DATABASE `directory_name` UPGRADE DATA DIRECTORY NAME;
    
    _

    (Bug #34066605)

  • Kondisi yang menggunakan null-safe equals operator () sekarang dapat dianggap oleh pelaksana sebagai kondisi equijoin. Predikat yang menggunakan kondisi seperti itu tidak dianggap sebagai predikat equijoin, melainkan sebagai predikat tambahan untuk dievaluasi setelah bergabung. (Bug #34063499)

  • Dukungan ditambahkan untuk mengkompilasi komponen Enkripsi MySQL Enterprise dengan OpenSSL 3. (Bug #34043029)

  • Dieksekusi XA START_3 pada kode sumber dan memperbaiki kesalahan ejaan yang dilaporkan dalam komentar kode. (Bug #34006439)

  • Jika satu atau lebih argumen to adalah nilai temporal, urutan penerusannya ke fungsi dapat memengaruhi hasilnya. (Bug #33996054)

  • Sebuah --replicate-do-db_6 dengan XA END5 pada tabel turunan yang berisi subquery bersarang sebagai bagian dari klausa XA END6 dengan predikat mengembalikan hasil yang salah. (Bug #33971286)

  • Panggilan ke XA END_8 di fungsi XA END9 dan

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    00 menyebabkan kesalahan saat kompilasi dengan OpenSSL 3. 0. (Bug #33967647)

  • Server tidak selalu memproses tampilan bersarang seperti yang diharapkan. (Bug #33876690)

  • mysqlpump mungkin tidak diberi izin yang benar untuk menggunakan tabel turunan (tabel yang dihasilkan oleh klausa kueri

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    01), menyebabkan proses dump berhenti jika ada. Tabel turunan sekarang ditangani secara terpisah dan hak istimewa ditetapkan untuknya. (Bug #33866103)

  • Eksekusi berulang dari rutinitas tersimpan yang memiliki subquery --replicate-do-db6 yang berisi beberapa kondisi

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    03,
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    04, atau
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    05 menyebabkan konsumsi berlebihan dan kemungkinan kehabisan memori virtual. (Bug #33852530)

  • memberikan informasi tentang perkiraan biaya dan waktu yang telah berlalu untuk setiap iterator dalam rencana kueri. Kami berharap angka-angka ini bersifat kumulatif, sehingga biaya (atau waktu) untuk iterator tertentu mencakup biaya setiap iterator yang bergantung pada iterator ini. Misalnya, perkiraan biaya penyambungan tabel

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    07 dengan tabel
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    08, menggunakan pemindaian tabel
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    07 diikuti dengan pencarian kunci primer pada
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    08, tidak boleh kurang dari biaya pemindaian
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    07 ditambah biaya pencarian kardinalitas pada
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    08

    Untuk beberapa kueri yang melibatkan materialisasi atau tabel sementara, angka ini tidak bersifat kumulatif. Selain itu, perkiraan biaya salah ketika mewujudkan hasil operasi --replicate-do-db9 dan kemudian melakukan pemindaian tabel pada tabel sementara (terwujud). (Bug #33834146, Bug #34302461)

  • Paksaan pemeriksaan untuk perbandingan dua nilai string bergantung pada urutan operan. Diberikan satu string menggunakan set karakter

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    14 dan satu string menggunakan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    15, perbandingan dilakukan menggunakan collation
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    14 ketika operan kiri adalah
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    14, dan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    15 ketika operan kiri adalah
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    15

    Akar masalahnya adalah dengan penanganan khusus yang digunakan untuk pemaksaan string ASCII; . Ini berarti bahwa satu string dapat diperlakukan sebagai ASCII sedangkan string lainnya tidak;

    Kami memperbaikinya dengan menggunakan properti

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    _22 internal daripada
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    23; . Sekarang dalam kasus seperti itu, tidak ada string yang diidentifikasi sebagai ASCII, yang mengarah ke konversi
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    15 ke
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    14 sebelum perbandingan dilakukan, seperti yang diharapkan. (Bug #33801312)

  • Cakupan batas diperluas ke pembacaan paket lengkap. (Bug #33723597)

    Referensi. Lihat juga. Bug #34574013

  • Validasi baru telah ditambahkan untuk memastikan bahwa Penjadwal Acara dimulai ulang secara otomatis di server seperti yang diharapkan. (Bug #33711304)

    Referensi. Lihat juga. Bug #33539082

  • Ketika pernyataan yang disiapkan dieksekusi tanpa kursor, itu bisa mengembalikan hasil yang salah jika eksekusi sebelumnya menggunakan kursor. Masalah ini diperbaiki dengan membuat dan menyimpan dua objek hasil kueri, satu untuk digunakan dengan kursor dan satu untuk digunakan tanpa kursor. Objek dibuat berdasarkan permintaan, jadi jika pernyataan yang disiapkan tidak pernah digunakan dengan kursor, objek hasil kueri khusus kursor tidak pernah dibuat. (Bug #33535746)

  • Pernyataan yang disiapkan dengan parameter bisa gagal memperbarui baris, tetapi pernyataan yang sama dengan data yang sama memang memperbarui baris saat dikeluarkan sebagai kueri. Perbaikan untuk masalah ini adalah menetapkan tipe data default ke parameter, meskipun ini bisa menjadi tidak efisien karena tidak ada konteks yang tersedia untuk propagasi tipe data dan tipe string karakter diberikan secara implisit. Dalam hal ini, praktik terbaik adalah membungkus deklarasi parameter tersebut dalam klausa yang menyediakan tipe data yang diinginkan. (Bug #33521861)

  • Untuk tabel yang menggunakan mesin penyimpanan FEDERATED, jika kueri berurutan di server lokal mengalami penundaan di antara mereka yang melebihi waktu tunggu server jauh (pengaturan

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    29), kesalahan paket dikembalikan di server lokal. Kesalahan batas waktu dari server jarak jauh sekarang ditangani dengan benar oleh server lokal, dan menghubungkan kembali dan mengeksekusi pernyataan lagi. (Bug #33500956)

  • Menangani kondisi tak terduga yang dapat muncul selama pengoptimalan gabungan. (Bug #31401468)

    Referensi. Lihat juga. Bug #34350945

  • Setelah eksekusi

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    _30, petunjuk pengoptimal tidak diuraikan dengan benar. (Bug #107820, Bug #34370403)

  • Kueri yang melakukan pencarian teks lengkap dalam mode boolean pada kolom tabel

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    31 menyebabkan pernyataan dalam build debug saat kolom bukan tipe string. Hal ini disebabkan fakta bahwa
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    _31 memungkinkan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    33 kolom tanpa indeks dalam mode boolean, dan oleh karena itu juga memungkinkan kolom bilangan bulat, yang tunduk pada propagasi konstan. Kueri tersebut pada tabel yang menggunakan mesin penyimpanan apa pun selain
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    31 tidak terpengaruh oleh masalah ini

    Ini diperbaiki dengan menonaktifkan propagasi konstan pada

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    33 klausa ketika kolom bukan tipe string, sehingga kita dapat dengan aman berasumsi bahwa itu hanya berisi referensi kolom. (Bug #107638, Bug #34311472)

  • Memperbaiki kesalahan dalam komentar di

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    36. Terima kasih kami kepada Dimitry Kudryavtsev atas kontribusinya. (Bug #107633, Bug #34308417)

  • Berikut perubahan penanganan error koneksi di MySQL 8. 0. 24, jika kesalahan seperti melebihi

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    37 menyebabkan klien mysql memutuskan koneksi dari server, kesalahan tidak diatur ulang setelah itu untuk menunjukkan pemutusan. Pada kueri berikutnya, kesalahan asli dikembalikan, dan penyambungan ulang otomatis tidak dilakukan karena klien mysql tidak memiliki kesalahan pemutusan sambungan. Kesalahan sekarang diatur ulang untuk menunjukkan pemutusan dan mengizinkan klien untuk menyambung kembali. (Bug #107605, Bug #34303841)

  • Mengikuti perbaikan bug di MySQL 8. 0. 29, jika kata sandi diberikan dalam file opsi, klien mysql tidak meminta kata sandi jika opsi

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    38 ditentukan saat login. Klien sekarang selalu meminta kata sandi ketika opsi
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    38 ditentukan dan menggunakan kata sandi yang ditentukan, bahkan jika alternatif diisi dari file opsi. (Bug #107205, Bug #34134984)

  • Alternatif untuk opsi server

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    40 yang sudah tidak digunakan lagi untuk menonaktifkan penggunaan koneksi terenkripsi tidak berfungsi seperti yang didokumentasikan, atau seperti yang disajikan dalam peringatan penghentian. Menyetel variabel sistem
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    _41 ke nilai kosong (
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    42) sekarang berfungsi dengan benar untuk tujuan ini. (Bug #106459, Bug #33858646)

  • Kueri agregat pada kolom

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    43 mengembalikan nilai yang diformat sebagai string bit, tetapi bendera
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    44 juga ditambahkan secara otomatis. Validasi baru sekarang memeriksa dan melewati pengaturan bendera
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    44 untuk hasil
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    43. (Bug #106241, Bug #33781442)

  • mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    _47 dan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    48 menggunakan lebih banyak CPU setelah diperkenalkannya
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    49 dan
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    50 daripada sebelumnya. (Bug #105924, Bug #33684069)

  • Ketika petunjuk merujuk ke indeks tertentu yang tidak digunakan untuk pemindaian lompatan tabel, semua kemungkinan indeks lainnya juga diabaikan, dan, dengan demikian, pemindaian lompatan tidak digunakan untuk indeks apa pun di atas meja

    Hal ini terjadi karena pemrosesan tidak dilakukan untuk semua kemungkinan kunci untuk melewati pemindaian jika petunjuk

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    51 tidak berlaku untuk semua indeks. (Bug #104670, Bug #33251616)

  • Kueri yang menggunakan

    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    53 IN (
    mysqlcheck --fix-db-names --fix-table-names --all-databases
    
    54) mengambil jumlah waktu CPU yang semakin lama karena daftar nilai bertambah panjang. (Bug #102037, Bug #32311183)

    Apa yang tidak digunakan lagi di MySQL?

    Opsi --secure-auth ke server dan program klien adalah default, tetapi sekarang tidak dioperasikan. Itu sudah usang dan akan dihapus dalam rilis MySQL mendatang. Opsi --skip-secure-auth ke server dan program klien tidak lagi didukung dan menggunakannya menghasilkan kesalahan.

    Apakah MySQL 8. 0 stabil?

    MySQL 8. 0 meningkatkan keandalan MySQL secara keseluruhan karena. MySQL8. 0 menyimpan meta-datanya ke InnoDB, mesin penyimpanan transaksional yang terbukti. Tabel sistem seperti tabel Pengguna dan Hak Istimewa serta Kamus Data sekarang berada di InnoDB. MySQL8. 0 menghilangkan satu sumber potensi ketidakkonsistenan.

    Haruskah saya memutakhirkan MySQL ke 8?

    MySQL 8. 0 memiliki peningkatan performa dan keamanan yang penting , dan, seperti dalam semua migrasi ke versi database baru, ada beberapa hal yang perlu diperhatikan sebelum masuk ke produksi untuk menghindari masalah sulit seperti kehilangan data, berlebihan .

    Apa yang terjadi pada MySQL 8. 0 29?

    29 (26-04-2022, Ketersediaan Umum) Rilis ini tidak lagi tersedia untuk diunduh. Itu telah dihapus karena masalah kritis yang dapat menyebabkan data dalam tabel InnoDB menambahkan kolom untuk diinterpretasikan secara tidak benar .