- 2005-12-31 (土)
- MySQL
前回エントリの続きです。自宅サーバにMySQL4.1を導入するうえで調べた日本語(マルチバイトコード)環境の設定方法をまとめてみました。※MySQL4.1のマルチバイト環境に関する総合的な情報は別エントリ「MySQL 4.1 日本語環境での使用時の注意点/関連情報まとめ」を参照の事。なので、ここでは単純に「日本語環境を構築するには何をどう設定すればよいのか... HOW TO 情報」に限定しています。
目次
- 2.3) 設定方法3: オプション引数 --default-character-set=x による指定
- 2.4) 設定方法4: Clientアプリ毎に異なる独自設定方法にて指定
- 3) 現在のキャラクタセット設定の確認方法
- 4)COLLATION 設定の確認方法
2.3) 設定方法3: オプション引数 --default-character-set=x による指定
mysql や mysqldump, mysqladmin 等の標準Clientを利用する際には、コマンドラインにオプション引数をつける事で使用するキャラクタセットを指定できます。この設定が有効なのはそのコネクションの間のみのようです。
[bash]$mysql -u root -p hoge --default-character-set=x
2.4) 設定方法4: Clientアプリ毎に異なる独自設定方法にて指定
最後は mysql等標準Client以外のその他クライアントアプリ側での設定方法です。Perl, PHP, Ruby, Java ...等などそれぞれで用意されたインターフェースドライバごとに異なった設定方法が用意されているはずです。ここでは自分が今回調べた Perl での設定方法を紹介しておきます。その他クライアントでの設定方法についてはここの記述が参考になるかと。
※Perl DBI でのキャラクタセット設定方法 :
connect method のオプション値 mysql_read_default_file にて読み込む my.cnf のパスを指定可能
だそうです。こうすると、同 my.cnf の中の [client] グループ配下の設定が Perl DBI に適応されます。 以下記述例 :
$data_source = "DBI:mysql:hoge;mysql_read_default_file=/etc/my.cnf"; $dbh = DBI->connect($data_source, $username, $password); → my.cnf 内の [client] グループ設定が有効になる [client] default-character-set=ujis
※その他関連情報: Perl - MySQL DBI インターフェースのより詳細な情報 @MySQL.com
3) 現在のキャラクタセット設定の確認方法
クライアント&サーバそれぞれの設定状態は以下のSQL文(というかコマンド文)にて把握可能です:
SHOW VARIABLES LIKE '%character\_set%'; 結果例 : +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | ujis | | character_set_results | ujis | | character_set_server | ujis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
上記は mysql での実行例ですが、Perl等のクライアントアプリでも同様に Variable_name , Value のカラムを持つレコードセットとして戻り値が返ってきます。詳細説明は省きますが、
character_set_client
character_set_connection
character_set_database
character_set_results
の4つが同じキャラクタセットになっていれば文字化けや、余計な文字コード自動置換処理は発生しないようです。※その他関連情報: 日本MySQLユーザ会FAQ「クライアントとサーバーのキャラクタセットの確認」
4)COLLATION 設定の確認方法
キャラクタセットに影響されるシステム変数 COLLATION (文字ソート順ルール) の設定状態は以下のSQL文にて把握可能です:
SHOW VARIABLES LIKE '%collation%'; 結果例 : +----------------------+------------------+ | Variable_name | Value | +----------------------+------------------+ | collation_connection | ujis_japanese_ci | | collation_database | ujis_japanese_ci | | collation_server | ujis_japanese_ci | +----------------------+------------------+
※以上、間違いがあったらごめんなさい...
Comments:2
- tokuhirom 2005-12-31 (土) 17:45
-
MySQL 4.1.15 以後をサーバに使っている場合だと --skip-character-set-client-handshake もあります。
http://d.hatena.ne.jp/secondlife/20051031/1130724806 - bashi 2005-12-31 (土) 19:33
-
> tokuhiromさん
書き込みどうもありがとうです。MySQL 5.0 からの導入だと思ってたら 4.1.15 からなんですね。後で記事に修正加えておきます。