DataBase MySQL

MySQLの文字コードを変更する

投稿日:

日本語を扱うにはutf8にするべきでしょう。
アプリケーション側で接続する際に文字コードを指定することもできます。

string constr = "userid=root;password=pass;database=test;Host=localhostCharset='utf8';
MySqlConnection con = new MySqlConnection(constr);
conn.Open();

しかし複数アプリからの接続がある場合は、それぞれで指定しなくてはいけません。
やはりサーバー側で文字コードの設定をしたいものです。

まずは現状の文字コードを確認します。

show global variables like '%character%'

'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/'

次にmy.cnfにサーバー側の文字コードを設定して、MySQLを再起動します。

# vim /usr/my.cnf
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8 

すると再起動時にエラーが発生しました・・・

[root@centos100 mysql]# service mysql start
Starting MySQL...The server quit without updating PID file [失敗]lib/mysql/centos100.pid).

どうやらMySQLのバージョンが上がって、
default-character-setからcharacter-set-serverに変更されたようです。
character-set-serverで設定しなおすと、MySQLも無事再起動しました。

# vim /usr/my.cnf
[mysqld]
character-set-server=utf8
[mysql]
character-set-server=utf8
[mysqldump]
character-set-server=utf8 
[root@centos100 mysql]# service mysql start
Starting MySQL.......                                      [  OK  ]

設定を確認するとutf8になっていることがわかります。
これでアプリ側で文字コードを指定しなくても日本語の登録が可能になります。

show global variables like '%character%'
'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/'

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL

執筆者:

関連記事

MySQLの実行速度テスト用PHP

1.testデータベースにtest_tableテーブルを作成。 2.1万件のデータを登録します。 3.1000件のフラグを更新 4.更新したデータを検索する時刻を測定して表示 するサンプルです。 &l …

sqlserver

SQLSERVERのトランザクションログの切り捨て・圧縮

トランザクションログはデータの登録・更新記録です。 INDEX1 復旧モデル2 切り捨て3 圧縮 復旧モデル トランザクションログを扱うには、トランザクションログがどのように使用されるかを知る必要があ …

mysql

MySQLでフラグの列でSELECTする。(複合インデックスの使用条件)

status=’1’とかdelete=’0’といった条件はよく使用することでしょう。 そこでフラグにはどのデータ型がベストなのでしょうか。 INDEX1 …

mysql

MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)でSELECT

タイトルの通り MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)で囲ってSELECT しなければなりません。 正確には、そうしなければパフォーマン …

mysql

MySQLのデータ構造

MySQLのインストールは簡単ですが、 ディレクトリ構造を知っておくことは障害対応にも必要ですのでまとめです。 MYSQLのデータ構成 /etc/my.cnfでメインディレクトリやソケット(mysql …