KUSONEKOの見る世界

Nextcloudの絵文字対応 MariaDB 4-byte 有効化

セキュリティ&セットアップ警告 画面に以下が出ていたため、対応してみました。
MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read the documentation page about this.
環境:
CentOS 7.6.1810
Apache 2.4.38-1
PHP 7.2.17-1
MariaDB 5.5.60-1
Nextcloud 15.0.7
以下URLの MariaDB 10.2 or earlier を実施しましたが、うまくいかない部分もありました。
https://docs.nextcloud.com/server/15/admin_manual/configuration_database/mysql_4byte_support.html
[root@server ~]# vi /etc/my.cnf
[mysqld] に以下を追加
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1

[root@server ~]# systemctl restart mariadb.service

[root@server ~]# mysql -u root -p
Enter password:

MariaDB [(none)]> SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";
ERROR 1054 (42S22): Unknown column 'FILE_FORMAT' in 'field list'
上記のようにエラーとなったが、そのまま以降の手順を実施。
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> quit
Bye

[root@server ~]# cd /var/www/html/nextcloud/
[root@server nextcloud]# sudo -u apache php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
System config value mysql.utf8mb4 set to boolean true

[root@server nextcloud]# sudo -u apache php occ maintenance:repair

ファイル名に絵文字が使えるようになりました。
成功したようです。

URL先には以下の記載もあり、バックアップする際はオプションを付けないといけないようです。
Also make sure your backup strategy still work. If you use mysqldump make sure to add the --default-character-set=utf8mb4 option. Otherwise your backups are broken and restoring them will result in ? instead of the emojis, making files inaccessible.