きっかけ
仕事上で人から聞かれて覚えてなくて。。
ということで調べたこと残しておきます。
mysqlの文字コードはプログラムふくめるとチェックする場所が多いので突き止めるのに毎回苦労です。
ORACLEだと即答できるのですが。。
原因
データベースの場合、大きく下記に分けられます。
- クライアント側の接続文字コード(プログラム側)
- サーバー側(mysqlサーバー)の接続文字コード
- データベースの文字コード
- テーブルの文字コード
- カラムの文字コード
調査方法
show variables like "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
対処方法
utf8に設定する
データベースデフォルトの設定
/etc/my.cnf
windowsであれば C:\Program Files\MySQL\MySQL Server 5.7\my.ini になります。
フォルダーはインストールによって異なります。
[mysqld]
...
character-set-server=utf8 #mysqldセクションの末尾に追加
[client]
default-character-set=utf8 #clientセクションを追加
再構築
原因箇所より再構築が必要です。
データ退避→drop→create→データ復元
が必要となります。悲しい出来事になります。
ではでは。
—————- 2017.04.02改定 —————————————————————
下記のほうが詳細です。
上記説明で分からない場合は ここ へ移動されてみてください
———————————————————————————————————–
[amazonjs asin=”4797369450″ locale=”JP” title=”基礎からのMySQL 改訂版 (基礎からシリーズ)”]