LoginSignup
2
3

More than 5 years have passed since last update.

【MySQL】文字コードをUTF8に変更する

Last updated at Posted at 2018-11-15

はじめに

アプリケーションをAWSの検証環境にデプロイしてブラウザをポチポチしながら動作確認している最中に文字コードをUTF8に変更する必要がありましたので、その手順を記します。
簡単だと思ってたら余裕で苦戦しました。。初学者あるあるですね。

環境

CentOS7.5
MySQL5.7
macOS 10系

パラメータ

データベース名:okome_DB
テーブル名:okome_table
カラム名:okome_column

手順(2パターンあります)

パターン1:UTF8を指定してcreate database

これが1番早い&簡単です。検証作業で別にぶっ壊れてもいいとか、テストデータしか入ってないとか(私です)の場合はこれで。

mysql> create database okome_DB default character set utf8;
Query OK, 1 row affected (0.00 sec)

ここから補足です。collate(偉そうに書いてますが本記事執筆にあたり調べたばかりです)もcreateするときに指定するのかな?と思い適当に指定したらしっかり怒られました。

mysql> create database okome_DB default character set utf8 collate utf8_general_ci;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'collate utf8_general_ci' at line 1

create table後にshowで調べた限りの確認をすると、指定しなくても反映されていましたのでひとまずよしとします。

mysql> show 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     | latin1 #ここ調べましたがよくわかりませんでした。。|
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show full columns from okome_table;
+----------------+--------------+-----------------+
| Field          | Type         | Collation       | 
+----------------+--------------+-----------------+
| okome_column   | varchar(256) | utf8_general_ci |
+----------------+--------------+-----------------+
1 rows in set (0.00 sec)

mysql> show create table okome_table;
+-------------+-------------------------------+
| Table       | CreateTable                   |
+-------------+-------------------------------+
| okome_table | CREATE TABLE `okome_table` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8          |
+-------------+-------------------------------+
1 row in set (0.00 sec)

パターン2:テーブルごとに文字コードを指定する

手順はこちらの記事をご確認くださいませ。

本記事の執筆にあたり一番最初に読んだ記事なのですが内容がわかりやすかったため、その後の理解も早かったです(最初にこちらを試して結構後にパターン1でいいじゃん、と気づいた感じです)。
ほか、以下の記事を参考にさせていただきました。記事を読んで手順を覚え、公式リファレンスで技術背景を学ぶ…といった具合です。

MySQL5.4の公式リファレンス
MySQLの文字コードとCollation
MySQLの照合順序を修正する
MySQLでデータベース作成する「CREATE DATABASE」
文字セットと照合順序の設定

参考書籍

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

最後まで読んでいただきありがとうございました。
簡単ですが以上です。

2
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
2
3