MySQL membuat keputusan untuk memperbarui database setelah membaca di situs web pengembang bahwa dalam versi kedelapan dukungan yang lebih komprehensif untuk UTF diperkenalkan. Secara khusus, MySQL 8.0.11 menggunakan ekspresi reguler berdasarkan ICU, International Components for Unicode.
Hal pertama yang saya perhatikan adalah bahwa batas kata dalam ekspresi reguler tidak lagi dapat dilambangkan sebagai:
SELECT '' REGEXP '[[:<:]][[:>:]]';
Batas kata dalam versi baru dilambangkan sebagai berikut:
'\\b\\b'
Selain itu, LOAD DATA LOCAL INFILE berhenti berfungsi, yaitu mengimpor data dari file teks di komputer lokal. Ternyata di MySQL 8.0 variabel global local_infile diatur ke OFF secara default. Mereka menulis di situs pengembang bahwa ini dilakukan sebagai tindakan pengamanan. Nilai variabel ini dapat dilihat dengan perintah berikut:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
Saya memecahkan masalah ini dengan mengeksekusi di terminal:
SET GLOBAL local_infile = true;
Artinya, masuk ke terminal di MySQL seperti biasa:
mysql -u root -p
dan menjalankan perintah di atas.
Untuk berjaga-jaga, saya mengekspor database ke PHPMyAdmin dalam format SQL di arsip GZ. Dan tidak menyesalinya. Cukup mengganti file data dari 5.7 ke 8.0.11 tidak berfungsi. Versi kedelapan tidak mengenalinya. Dan mengimpor data dari file SQL tanpa komentar.
Dan itu saja. Sisanya bekerja dengan baik. Saya sudah dapat melihat bahwa dalam versi kedelapan, ekspresi reguler ICU memiliki lebih banyak fitur, yang penting untuk bekerja dengan alfabet Cyrillic.