Решение об обновлении базы данных MySQL принял после того, как прочитал на сайте разработчика, что в восьмой версии внедрена более полная поддержка UTF. В частности в MySQL 8.0.11 используются регулярные выражения на базе ICU, International Components for Unicode.
Первое, что заметил это то, что границы слова в регулярных выражениях теперь нельзя обозначить как:
SELECT 'слово' REGEXP '[[:<:]]слово[[:>:]]';
Границы слова в новой версии обозначаются таким образом:
'\bслово\b'
Кроме того, перестал работать LOAD DATA LOCAL INFILE, то есть импорт данных из текстового файла на локальном компьютере. Оказывается, в MySQL 8.0 по умолчанию глобальная переменная local_infile выставлена OFF. На сайте разработчика пишут, что это было сделано как мера безопасности. Значение этой переменной можно посмотреть такой командой:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
Решил эту проблему выполнением в терминале:
SET GLOBAL local_infile = true;
То есть вписался в терминале в MySQL обычным:
mysql -u root -p
и выполнил вышеуказанную команду.
Базы данных я на всякий случай экспортировал в PHPMyAdmin в SQL формате в GZ архивы. И не пожалел. Просто подставить файлы данных из 5.7 в 8.0.11 не получается. Восьмая версия их не распознаёт. А импорт данных из SQL файлов прошёл без замечаний.
И в общем-то всё. Остальное всё работает нормально. Уже вижу, что в восьмой версии регулярные выражения ICU имеют более широкие возможности, что немаловажно для работы с кириллицей.
Автор: рекрут