Drush コマンドで Drupal UTF8 データベースを UTF8MB4 に変換する方法
Nid: 916
ステータス画面で "Database 4 byte UTF-8 support Not enabled" のメッセージが出ている場合、この方法でDBを UTF8MB4 に変換して解決します。
1 . MariaDB設定
- 現状確認
$ sudo mysql -u root -e "SHOW VARIABLES LIKE 'innodb%';" | grep 'large_prefix\|file_format\s\+\|file_per_table' innodb_file_format Antelope innodb_file_per_table ON innodb_large_prefix OFF
- 設定変更
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf [mysqld] ... innodb_file_per_table=1 innodb_large_prefix=true innodb_file_format=barracuda
- DB再起動して設定反映
$ sudo systemctl restart mysql $ sudo mysql -u root -e "SHOW VARIABLES LIKE 'innodb%';" | grep 'large_prefix\|file_format\s\+\|file_per_table' innodb_file_format Barracuda innodb_file_per_table ON innodb_large_prefix ON
2 . drush コマンド "UTF8MB4 Convert" のインストール
$ drush dl utf8mb4_convert $ drush cc drush
3 . DB変換とDrupal設定
$ cd /var/www/html/example.com/ $ drush vset maintenance_mode 1 # メンテナンスモード $ sudo drush archive-dump # DBバックアップ $ drush utf8mb4-convert-databases # 変換 $ sudo vim sites/default/settings.php # 設定 $databases['default']['default'] = array( ... 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci', ); $ drush vset maintenance_mode 0 # メンテナンスモード解除
4 . サイトにアクセスして確認
http://example.com/admin/reports/status
5 . 有効にしているのにエラー
Database 4 byte UTF-8 support | Not supported | |
4 byte UTF-8 for mysql is activated, but not supported on your system. Please turn this off in settings.php, or ensure that all database-related requirements are met. See the documentation on adding 4 byte UTF-8 support for more information. |
$ drush sql-query "drop table drupal_utf8mb4_test;"