LoginSignup
0
3

More than 5 years have passed since last update.

wordpressに絵文字が入らなかった件

Posted at

概要

業務でutf8mb4対応を他のシステムでやって存在を知った。
自分ブログにもutf8mb4に対応して絵文字を入力できるようにしてみた。

環境

CentOS 6.9
mysql 5.1
wordpress 4.9.8

原因

mysqlはutf8mb4じゃないと絵文字を入れることができない。
ちなみに吉田さんの「𠮷」バージョンとかもutf8mb4じゃないと化けてしまう。
使っているmysql5.1でutf8mb4を使えなかった。
mysql5.5以上で出来る様子、使えないならバージョンアップしちゃえばいいじゃない:point_up_tone1:

カラムの型を変えることで対応することもできるみたいです。

MySQL5.1 で 4byte な utf8 文字を扱う方法

対応

DBダンプを取る

消えてはまずいものをバックアップする

mysqldump -u root -p -h localhost wordpress_db > wordpress_db_dump.sql

mysqlのバージョンを上げる

こちらを参考に下記コマンドを実行した。

service mysqld stop
yum remove mysql*
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum install mysql mysql-devel mysql-server mysql-utilities

バージョン確認

mysql --version
mysql  Ver 14.14 Distrib 5.6.41, for Linux (x86_64) using  EditLine wrapper

OK!!

とりあえずここまでで、絵文字入力できました。
特にutf8mb4設定してないのに入力できたのは謎:frowning2:

(その他)utf8mb4について

とりあえず、絵文字入力ができたが全体でutf8mb4に合わせたほうがいいかと思ったので下記を実施した。

mysqlとクライアントの文字コードを設定する

/etc/my.cnf
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

下記で確認する。

show variables like "chara%";

データベースの文字コードを設定する

alter database wordpress_db character set utf8mb4;

下記で確認する。

show create database wordpress_db;

テーブルの文字コードを設定する

下記SQLを流す。今回エラーがでなかったが変換時に行フォーマット系でエラーが出る場合がある。

mb4_alter.sql
alter table `wp_commentmeta` convert to character set utf8mb4;
alter table `wp_comments` convert to character set utf8mb4;
alter table `wp_links` convert to character set utf8mb4;
alter table `wp_options` convert to character set utf8mb4;
alter table `wp_postmeta` convert to character set utf8mb4;
alter table `wp_posts` convert to character set utf8mb4;
alter table `wp_term_relationships` convert to character set utf8mb4;
alter table `wp_term_taxonomy` convert to character set utf8mb4;
alter table `wp_termmeta` convert to character set utf8mb4;
alter table `wp_terms` convert to character set utf8mb4;
alter table `wp_usermeta` convert to character set utf8mb4;
alter table `wp_users` convert to character set utf8mb4;

下記で確認する。create文が表示されて、charsetがutf8mb4になっているのがわかる。

show create table wp_posts;

番外編

カラムだけ適応させるには?

業務でカラムだけutf8mb4対応した。

alter table table_name modify 'column_name' varchar(255) character set utf8mb4;

みたいな感じでカラムのみ変更できる。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3