mysql_r

mysql5.7をインストールした時にinsert文の値が日本語を含む場合にエラーになりました。
その時のメモをこちらに残しておきます。

##日本語をinsertすると次のエラーメッセージが表示された。
ERROR 1366 (HY000): Incorrect string value: ‘\xE9\xAB\x98\xE6\xA9\x8B…’ for column ‘title’ at row 1

## 環境
・cent os 7.0
・mysql 5.7

### mysqlは次のコマンドでインストールしたものです。
#### リポジトリ追加、インストール
$ yum install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

#### インストール
$ yum install -y mysql-community-server

## 文字化け確認のためにcharaを表示

mysql> show variables like “chara%”;
ERROR 1146 (42S02): Table ‘performance_schema.session_variables’ doesn’t exist
mysql> quit

→mysql_upgrade -u root -p –force
mysql_upgradeをして「 performance_schema.session_variables」エラーは解消される

## charaの確認
mysql>user db
mysql>variables like “chara%”;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

→latin1となっている。これがエラーの原因。utf8に変更する

## my.cnf編集
vi /etc/my.cnf
[mysqld]

下記を追記
character-set-server=utf8

## mysql再起動
$systemctl restart mysqld.service

## mysqlに接続
mysql> variables like “chara%”;

+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

→utf8となった
テーブルを再作成して確認。utf8になっているはず。
mysql>show create table テーブル名 \G; で確認

ENGINE=InnoDB DEFAULT CHARSET=utf8となっていれば、文字化けは解消される