Включаем поддержку UTF8MB4 в Drupal 7

Drupal 7 с версии 7.50, научился поддерживать UTF8MB4, но по умолчанию оно не работает. Вообще конечно, это лишь видно в отчёт о состоянии и оно как бы не обязательно, но лично меня раздражает вот это сообщение:

Чтоб от этого избавиться применим магию и заклинаяни. Для начала надо установить сам конвертер.

1
2
drush dl utf8mb4_convert
drush cc drush

Конвертер установлен, его не нужно устанавливать на каждый сайт, он ставится лишь один раз и устанавливается как команда драш. Теперь пора применить магию и заклинания к каждому конкретному сайту. Погнали

  1. Делаем бэкап базы данных drush sql-dump >> backup.sql
  2. Включаем режим обслуживания drush vset maintenance_mode 1
  3. Конвертируем нашу базу drush utf8mb4-convert-databases
  4. Включаем поддержку utf8mb4 в settings.php
1
2
3
4
5
6
7
8
9
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'databasename',
  'username' => 'username',
  'password' => 'password',
  'host' => 'localhost',
  'charset' => 'utf8mb4',
  'collation' => 'utf8mb4_general_ci',
);
  1. Выключаем режим обслуживания drush vset maintenance_mode 0

Все! Магия и заклинания теперь вступили в силу и работают. Запускаем, крон и смотрим отчет о состоянии на нашем сайте, он должен выглядеть так:

UPD

В комментариях товарищ bassay подсказывает, что нужно бы еще и конфиг MySQL поправить:

1
2
3
4
[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=true

Чуть не забыл. Вы можете почитать меня в твиттере или телеграме, посмотреть мои фотографии в инстаграме, подружиться со мной в PSN, позлить меня на твиче пока я играю или посмотреть в записи. А самые лучшие человеки могут меня поддержать деньгой.