SlideShare a Scribd company logo
1 of 62
Download to read offline
MySQLの文字コード事情MySQLの文字コード事情
2017春版2017春版
NSEG #87 MySQL
2017/05/13
とみたまさひろ
自己紹介自己紹介
とみた まさひろ
長野県北部在住プログラマー
好きなプログラミング言語 Ruby
Ruby/MySQLライブラリ
MyNA代表
http://tmtms.hatenablog.com
http://twitter.com/tmtms
最近の活動最近の活動
Software Design 2016年6月号
「MySQLでデータベースを作ってみよう!」
Software Design 2016年9月号
「MySQL 4つのログの使いどころ」
Software Design 2016年12月号
「Rubyと文字コード」
「MySQLと文字コード」
Software Design 2017年7月号(予定)
mysql.gr.jp ドメイン料支払い
MySQLの文字コード事情MySQLの文字コード事情
MySQLで文字コードというMySQLで文字コードという
と Character set(Charset)と Character set(Charset)
Character set ?Character set ?
語源的には文字集合語源的には文字集合
文字集合文字集合
US-ASCII
数字、英字、32個の記号
JIS X 0201
US-ASCII(「」→「¥」/「~」→「‾」)+カタカ
ナ
JIS X 0208
数字、ひらがな、カタカナ、漢字、ラテン文字、
ギリシャ文字、記号等々
JIS X 0213
JIS X 0208 + 第三水準/第四水準、ローマ数字、
鼻濁音文字等々
文字集合文字集合
Windows-31J
JIS X 0201 + JIS X 0208 + NEC特殊文字 + IBM
拡張文字(「⑧」「Ⅷ」「㈱」「髙」「﨑」「彅」
等)
Unicode
世界中の文字。絵文字(「�����������������」「�������������������」等)も含む。
あれ?あれ?
「CP932」とか「UTF-8」「CP932」とか「UTF-8」
は?は?
エンコーディングエンコーディング
文字符号化方式文字符号化方式
文字集合の文字をコンピュータで利用できるバイト列
に変換する方式
エンコーディングエンコーディング
Encoding 文字集合 用途
ISO-2022-JP US-ASCII, JIS X 0201(ラテン文
字), JIS X 0208
メール
EUC-JP US-ASCII, JIS X 0201(カナ文字),
JIS X 0208, JIS X 0212
昔の
UNIX
SHIFT_JIS JIS X 0201, JIS X 0208
Windows-31J
CP932
Windows-31J Windows
エンコーディングエンコーディング
Encoding 文字集合 1文字のサイズ
UTF-8 Unicode 1〜4バイト
UTF-16 Unicode 2バイト
UTF-32 Unicode 4バイト
Charset ≒ エンコーディングCharset ≒ エンコーディング
(MySQLに限らない)(MySQLに限らない)
MySQLのCharsetMySQLのCharset
mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+-------
| Charset | Description | Default collation | Maxlen
+----------+---------------------------------+---------------------+-------
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2
| dec8 | DEC West European | dec8_swedish_ci | 1
| cp850 | DOS West European | cp850_general_ci | 1
| hp8 | HP West European | hp8_english_ci | 1
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1
| latin1 | cp1252 West European | latin1_swedish_ci | 1
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1
| swe7 | 7bit Swedish | swe7_swedish_ci | 1
| ascii | US ASCII | ascii_general_ci | 1
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1
| tis620 | TIS620 Thai | tis620_thai_ci | 1
| cp1250 | Windows Central European | cp1250_general_ci | 1
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1
| utf8 | UTF-8 Unicode | utf8_general_ci | 3
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2
| cp866 | DOS Russian | cp866_general_ci | 1
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1
| macce | Mac Central European | macce_general_ci | 1
| macroman | Mac West European | macroman_general_ci | 1
| cp852 | DOS Central European | cp852_general_ci | 1
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1
| utf16 | UTF-16 Unicode | utf16_general_ci | 4
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4
| cp1256 | Windows Arabic | cp1256_general_ci | 1
| cp1257 | Windows Baltic | cp1257_general_ci | 1
| utf32 | UTF-32 Unicode | utf32_general_ci | 4
| binary | Binary pseudo charset | binary | 1
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1
+----------+---------------------------------+---------------------+-------
41 rows in set (0.00 sec)
日本語が使えてASCII互換の日本語が使えてASCII互換の
は ujis, sjis, eucjpms,は ujis, sjis, eucjpms,
cp932, utf8, utf8mb4cp932, utf8, utf8mb4
MySQL CharsetMySQL Charset
charset 文字集合 エンコーディング
ujis JIS X 0201 + 0208 EUC-JP
sjis JIS X 0201 + 0208 SHIFT_JIS
eucjpms Windows-31J EUC-JP風
cp932 Windows-31J Windows-31J
utf8 Unicode UTF-8
utf8mb4 Unicode UTF-8
今なら普通はUnicode今なら普通はUnicode
世界中のほぼすべての文字を扱える
絵文字も使える
世の中もう普通にユニコード
文字コード変換とか考えなくていい
文字化けしない
utf8 ? utf8mb4 ?utf8 ? utf8mb4 ?
utf8 と utf8mb4utf8 と utf8mb4
utf8: 1文字 1〜3バイト (U+0000〜U+FFFF)
utf8mb3 という別名あり
utf8mb4: 1文字 1〜4バイト(U+0000〜U+1FFFFF)
UTF-8 は普通1〜4バイト
utf8 / utf8mb4 の違いは MySQL のみ
ほとんどの日本語文字は3バイト
一部の漢字と絵文字等が4バイト
4バイトになる JIS X 02134バイトになる JIS X 0213
の文字の文字
𠀋𡈽𡌛𡑮𡢽𠮟𡚴𡸴𣇄𣗄𣜿𣝣𣳾𤟱𥒎𥔎𥝱𥧄𥶡𦫿𦹀𧃴𧚄𨉷𨏍𪆐𠂉
𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠑊𠔉𠗖𠘨𠝏𠠇𠠺𠢹𠥼𠦝𠫓𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁
𡉕𡉻𡉴𡋤𡋗𡋽𡌶𡍄𡏄𡑭𡗗𦰩𡙇𡜆𡝂𡧃𡱖𡴭𡵅𡵸𡵢𡶡𡶜𡶒𡶷𡷠𡸳
𡼞𡽶𡿺𢅻𢌞𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝𢮦𢰤𢷡𣇃𣇵𣆶𣍲𣏓𣏒𣏐𣏤𣏕
𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚𣖔𣘹𣙇𣘸𣘺𣜜𣜌𣝤𣟿𣟧𣠤𣠽𣪘𣱿𣴀𣵀𣷺𣷹𣷓
𣽾𤂖𤄃𤇆𤇾𤎼𤘩𤚥𤢖𤩍𤭖𤭯𤰖𤴔𤸎𤸷𤹪𤺋𥁊𥁕𥄢𥆩𥇥𥇍𥈞𥉌𥐮
𥓙𥖧𥞩𥞴𥧔𥫤𥫣𥫱𥮲𥱋𥱤𥸮𥹖𥹥𥹢𥻘𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠𦃭
𦉰𦊆𦍌𣴎𦐂𦙾𦚰𦜝𦣝𦣪𦥑𦥯𦧝𦨞𦩘𦪌𦪷𦱳𦳝𦹥𦾔𦿸𦿶𦿷𧄍𧄹𧏛
𧏚𧏾𧐐𧑉𧘕𧘔𧘱𧚓𧜎𧜣𧝒𧦅𧪄𧮳𧮾𧯇𧲸𧶠𧸐𧾷𨂊𨂻𨊂𨋳𨐌𨑕𨕫
𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦇𨦈𨦺𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝𨯁𨯯𨴐𨵱𨷻𨸟𨸶𨺉
𨻫𨼲𨿸𩊠𩊱𩒐𩗏𩙿𩛰𩜙𩝐𩣆𩩲𩷛𩸽𩸕𩺊𩹉𩻄𩻩𩻛𩿎𪀯𪀚𪃹𪂂𢈘
𪎌𪐷𪗱𪘂𪘚𪚲
4バイトになる絵文字(一部)4バイトになる絵文字(一部)
�����������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������ ������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
MySQLのCharsetMySQLのCharset
サーバー
クライアント
サーバー/クライアント間の接続
データベース毎
テーブル毎
カラム毎
…を全部別々に設定できる(嫌な予感しかしない)
ハマりたくなければ全部統一ハマりたくなければ全部統一
サーバー Charsetサーバー Charset
新規に作成するデータベースのCharsetのデフォルト
これさえ指定しておけばだいたいOK
mysqld の起動オプション
--character-set-server=utf8mb4
my.cnf の [mysqld] セクション
character-set-server = utf8mb4
サーバー変数 character_set_server
データベース Charsetデータベース Charset
配下に作成するテーブルのCharsetのデフォルト値
サーバーCharsetと同じであれば指定しなくてもいい
作成: CREATE DATABASE db CHARSET utf8mb4;
確認: SHOW CREATE DATABASE db;
変更: ALTER DATABASE db CHARSET utf8mb4;
変更しても既存のテーブルCharsetは変更されない
テーブル Charsetテーブル Charset
テーブル内カラムのCharsetのデフォルト値
データベースCharsetと同じであれば指定する必要は
ない
作成: CREATE TABLE tbl (...) CHARSET utf8mb4;
確認: SHOW CREATE TABLE tbl;
テーブル Charsetテーブル Charset
テーブル属性だけ変更:
ALTER TABLE tbl CHARSET utf8mb4;
既存のカラムのcharsetは変更されない
全カラムとデータの変換:
ALTER TABLE tbl CONVERT TO CHARSET utf8mb4;
utf8 で作ってしまったテーブルを utf8mb4 に変
換とか
カラム Charsetカラム Charset
テーブルCharsetと同じであれば指定する必要はない
作成: CREATE TABLE tbl (col VARCHAR(10) CHARSET
utf8mb4, ...);
確認: SHOW CREATE TABLE tbl;
変更: ALTER TABLE tbl MODIFY col VARCHAR(10)
CHARSET utf8mb4;
変更するとカラム内のデータも変換される
クライアント Charsetクライアント Charset
クライアント内での文字列処理と
サーバーとの接続Charsetに使用される
指定方法はプログラム/言語に依存
mysql --default-character-set=utf8mb4
プログラムによっては my.cnf の [client] セクショ
ンが有効
「loose-」をつけておくとそのパラメータを知らないプログラムは
無視してくれる
[client]
loose-default-character-set = utf8mb4
クライアント Charsetクライアント Charset
mysqld との接続毎に異なる
mysql コマンドでOKでも他のアプリからはNGかも
しれない
何も指定しなければ latin1
Charset の確認Charset の確認
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql コマンドmysql コマンド
mysql コマンドのデフォルトCharsetは auto
システムロケール(LC_ALL, LC_CTYPE, LANG 環境
変数等)により値が決定
LANG=ja_JP.UTF-8 の場合は utf8 になる
utf8mb4 ではない
LANG=C の場合は latin1 になる
utf8 と utf8mb4 の混在でutf8 と utf8mb4 の混在で
起きること起きること
utf8接続から4バイト文字をutf8接続から4バイト文字を
参照参照
クライアントが扱えない文字は「?」になる
mysql> SELECT str FROM tbl;
+-------+
| str |
+-------+
| ?と? | ← '�������������������と�����������������'
| ?と? | ← '?と?'
+-------+
バイト列を見れば違いがわかバイト列を見れば違いがわか
るる
mysql> SELECT HEX(str) FROM tbl;
+------------------------+
| HEX(str) |
+------------------------+
| F09F8DA3E381A8F09F8DBA | ← '�������������������と�����������������'
| 3FE381A83F | ← '?と?'
+------------------------+
utf8接続から4バイト文字をutf8接続から4バイト文字を
登録登録
文字化けして登録されちゃう
mysql> INSERT INTO tbl (str) VALUES ('�������������������と�����������������');
Query OK, 1 row affected, 2 warnings (0.05 sec)
mysql> SELECT str,HEX(str) FROM tbl;
+-------------+------------------------+
| str | HEX(str) |
+-------------+------------------------+
| ????と???? | 3F3F3F3FE381A83F3F3F3F |
+-------------+------------------------+
sql_modesql_mode
MySQLはおかしなことしてもあまりエラーにならな
い(余計なお世話)
sql_mode でちゃんとエラーにしてくれる
mysql> SET sql_mode='STRICT_ALL_TABLES';
mysql> INSERT INTO tbl (str) VALUES ('�������������������と�����������������');
ERROR 1366 (HY000): Incorrect string value:
'xF0x9Fx8DxA3xE3x81...' for column 'str' at row 1
sql_modesql_mode
MySQL 5.7 からはデフォルト
mysql> SELECT @@sql_mode
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION
�������������������=����������������� 問題
�������������������と�����������������以外でも
mysql> SELECT '����������'='�������������';
+---------+
| '?'='?' |
+---------+
| 1 |
+---------+
mysql> SELECT '����������'='�����';
+---------+
| '?'='?' |
+---------+
| 1 |
+---------+
実は未知の文字�扱い実は未知の文字�扱い
‘�������������������’=’�����������������’=’�’
CollationCollation
CollationCollation
文字の照合規則・照合順序
Charset 毎に Collation がある
Charset の指定は Charset のデフォルトの
Collation を指定するのと同じ
Collation 一覧Collation 一覧
mysql> SHOW COLLATION LIKE 'utf8mb4%';
+------------------------+---------+-----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+------------------------+---------+-----+---------+----------+---------+
| utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 |
| utf8mb4_bin | utf8mb4 | 46 | | Yes | 1 |
| utf8mb4_unicode_ci | utf8mb4 | 224 | | Yes | 8 |
| utf8mb4_icelandic_ci | utf8mb4 | 225 | | Yes | 8 |
| utf8mb4_latvian_ci | utf8mb4 | 226 | | Yes | 8 |
| utf8mb4_romanian_ci | utf8mb4 | 227 | | Yes | 8 |
| utf8mb4_slovenian_ci | utf8mb4 | 228 | | Yes | 8 |
| utf8mb4_polish_ci | utf8mb4 | 229 | | Yes | 8 |
| utf8mb4_estonian_ci | utf8mb4 | 230 | | Yes | 8 |
| utf8mb4_spanish_ci | utf8mb4 | 231 | | Yes | 8 |
| utf8mb4_swedish_ci | utf8mb4 | 232 | | Yes | 8 |
| utf8mb4_turkish_ci | utf8mb4 | 233 | | Yes | 8 |
| utf8mb4_czech_ci | utf8mb4 | 234 | | Yes | 8 |
| utf8mb4_roman_ci | utf8mb4 | 239 | | Yes | 8 |
| utf8mb4_persian_ci | utf8mb4 | 240 | | Yes | 8 |
| utf8mb4_esperanto_ci | utf8mb4 | 241 | | Yes | 8 |
| utf8mb4_hungarian_ci | utf8mb4 | 242 | | Yes | 8 |
| utf8mb4_sinhala_ci | utf8mb4 | 243 | | Yes | 8 |
| utf8mb4_german2_ci | utf8mb4 | 244 | | Yes | 8 |
| utf8mb4_croatian_ci | utf8mb4 | 245 | | Yes | 8 |
| utf8mb4_unicode_520_ci | utf8mb4 | 246 | | Yes | 8 |
| utf8mb4_vietnamese_ci | utf8mb4 | 247 | | Yes | 8 |
+------------------------+---------+-----+---------+----------+---------+
26 rows in set (0.00 sec)
utf8mb4 の Collationutf8mb4 の Collation
utf8mb4_bin
utf8mb4_general_ci
utf8mb4_unicode_ci
utf8mb4_unicode_520_ci
utf8mb4_言語_ci
utf8mb4_japanese_ci は無い
「ci」は Case Insensitive(大文字小文字を区別しない)
の意味らしい
utf8mb4_binutf8mb4_bin
varchar(n) binary
全文字を区別する(A≠a, �������������������≠�����������������)
utf8mb4_general_ciutf8mb4_general_ci
utf8mb4 Charset のデフォルト Collation
大文字小文字を区別しない(A=a, A=a)
全角半角は区別する(A≠A)
絵文字を区別しない(�������������������=�����������������)
utf8mb4_unicode_ciutf8mb4_unicode_ci
Unicode Collation Algorithm 4.0.0
大文字小文字を区別しない(A=a, A=a, や=ゃ)
「びょういん=びよういん」問題
全角半角も区別しない(A=A)
絵文字を区別しない(�������������������=�����������������)
ひらがな、カタカナ、濁点有無、全角、半角を区別
しない(は=ば=ぱ=ハ=バ=パ=ハ)
「ハハ=パパ=ババ問題」
http://www.unicode.org/reports/tr10/tr10-11.html
http://dev.mysql.com/doc/refman/5.6/ja/charset-unicode-sets.html
utf8mb4_unicode_520_ciutf8mb4_unicode_520_ci
Unicode Collation Algorithm 5.2.0
大文字小文字を区別しない(A=a, A=a, や=ゃ)
全角半角も区別しない(A=A)
絵文字を区別する(�������������������≠�����������������)
ひらがな、カタカナ、濁点有無、全角、半角を区別
しない(は=ば=ぱ=ハ=バ=パ=ハ)
http://www.unicode.org/reports/tr10/tr10-20.html
utf8mb4_*utf8mb4_*
Collation A : a ������������������� : ����������������� は : ば
ぱ : ハ
や : ゃ
general_ci = = ≠ ≠
bin ≠ ≠ ≠ ≠
unicode_ci = = = =
unicode_520_ci = ≠ = =
utf8mb4_*utf8mb4_*
Collation A : a ������������������� : ����������������� は : ば
ぱ : ハ
や : ゃ
general_ci = = ≠ ≠
bin ≠ ≠ ≠ ≠
unicode_ci = = = =
unicode_520_ci = ≠ = =
ぼくたちが欲しかった
japanese_ci
= ≠ ≠ ≠
寿司=ビール問題 : MySQL 8.0でのUTF8寿司=ビール問題 : MySQL 8.0でのUTF8
サポート入門(MySQL Server Blogより)サポート入門(MySQL Server Blogより)
https://yakst.com/ja/posts/4405
私たちは日本語の照合順序の追加も計
画中です。日本語は興味深い言語であ
り、私たちの照合順序のエキスパート
であるXing ZhangとBernt Marius
Johnsenが、今後のブログ記事でもっ
と詳しく説明するはずです。
2017/1/13の記事(の翻訳)
MySQL 8 (開発中)MySQL 8 (開発中)
mysql> SELECT collation_name FROM collations
WHERE character_set_name='utf8mb4' AND
collation_name LIKE '%ja%';
+-----------------------+
| collation_name |
+-----------------------+
| utf8mb4_ja_0900_as_cs |
+-----------------------+
utf8mb4_*utf8mb4_*
Collation A : a ������������������� : ����������������� は : ば
ぱ : ハ
や : ゃ
general_ci = = ≠ ≠
bin ≠ ≠ ≠ ≠
unicode_ci = = = =
unicode_520_ci = ≠ = =
0900_ai_ci = ≠ = =
0900_as_cs ≠ ≠ ≠ ≠
ja_0900_as_cs ≠ ≠ ≠ ≠
ちょっと期待したのとは違うちょっと期待したのとは違う
正式リリースまでに変わるか正式リリースまでに変わるか
もも
デフォルトのCollationデフォルトのCollation
MySQL 5.7
mysql> SELECT collation_name, is_default FROM collations
WHERE character_set_name='utf8mb4' and is_default='Yes';
+--------------------+------------+
| collation_name | is_default |
+--------------------+------------+
| utf8mb4_general_ci | Yes |
+--------------------+------------+
MySQL 8
+--------------------+------------+
| collation_name | is_default |
+--------------------+------------+
| utf8mb4_0900_ai_ci | Yes |
+--------------------+------------+
MySQL 8 の utf8mb4 はデMySQL 8 の utf8mb4 はデ
フォルトでフォルトで
「ハハ=パパ=ババ」「ハハ=パパ=ババ」
「びょういん=びよういん」「びょういん=びよういん」
まとめまとめ
ふつうは utf8mb4
サーバーとクライアントの両方で Charset を指定
sql_mode をちゃんと設定
Collation は適切に
MySQL 8 でデフォルトが変わる

More Related Content

What's hot

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container ServicesAmazon Web Services Japan
 
Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例OSSラボ株式会社
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介Tetsutaro Watanabe
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceToru Makabe
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢Naoyuki Yamada
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Kuniharu(州晴) AKAHANE(赤羽根)
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Yahoo!デベロッパーネットワーク
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?Kuniyasu Suzaki
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 

What's hot (20)

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services
 
Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例Zabbix監視運用業務の自動化事例
Zabbix監視運用業務の自動化事例
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 

Viewers also liked

MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版Masahiro Tomita
 
ネットワークこわい
ネットワークこわいネットワークこわい
ネットワークこわいMasahiro Tomita
 
アジャイルレトロスペクティブズ
アジャイルレトロスペクティブズアジャイルレトロスペクティブズ
アジャイルレトロスペクティブズYagi Natsuki
 
KPTとKPTA
KPTとKPTAKPTとKPTA
KPTとKPTAESM SEC
 
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~ESM SEC
 
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24Shinichi Nakagawa
 
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・Rakuten Group, Inc.
 

Viewers also liked (9)

MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
 
Rubyの黒魔術
Rubyの黒魔術Rubyの黒魔術
Rubyの黒魔術
 
CSV
CSVCSV
CSV
 
ネットワークこわい
ネットワークこわいネットワークこわい
ネットワークこわい
 
アジャイルレトロスペクティブズ
アジャイルレトロスペクティブズアジャイルレトロスペクティブズ
アジャイルレトロスペクティブズ
 
KPTとKPTA
KPTとKPTAKPTとKPTA
KPTとKPTA
 
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
 
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
 
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
 

More from Masahiro Tomita

お前の罪を数えろ
お前の罪を数えろお前の罪を数えろ
お前の罪を数えろMasahiro Tomita
 
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコルMasahiro Tomita
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャルMasahiro Tomita
 
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトアジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトMasahiro Tomita
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話Masahiro Tomita
 
MySQLのプロトコル解説
MySQLのプロトコル解説MySQLのプロトコル解説
MySQLのプロトコル解説Masahiro Tomita
 
Dockerイメージを作る
Dockerイメージを作るDockerイメージを作る
Dockerイメージを作るMasahiro Tomita
 

More from Masahiro Tomita (20)

お前の罪を数えろ
お前の罪を数えろお前の罪を数えろ
お前の罪を数えろ
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル
 
Ruby24
Ruby24Ruby24
Ruby24
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
MySQLを拡張する
MySQLを拡張するMySQLを拡張する
MySQLを拡張する
 
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
 
MyNAができるまで
MyNAができるまでMyNAができるまで
MyNAができるまで
 
文字化け
文字化け文字化け
文字化け
 
Crystal
CrystalCrystal
Crystal
 
メールの暗号化
メールの暗号化メールの暗号化
メールの暗号化
 
文字化け
文字化け文字化け
文字化け
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトアジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
 
🍣=🍺
🍣=🍺🍣=🍺
🍣=🍺
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
 
Sequelのすすめ
SequelのすすめSequelのすすめ
Sequelのすすめ
 
MySQLのプロトコル解説
MySQLのプロトコル解説MySQLのプロトコル解説
MySQLのプロトコル解説
 
Dockerイメージを作る
Dockerイメージを作るDockerイメージを作る
Dockerイメージを作る
 

MySQLの文字コード事情 2017春版