memo.xight.org

日本語がうまくソートされない

日本語がうまくソートされない

- 問題
  PHP / MySQL で日本語がうまくソートされない
- 原因
  MySQL の文字コードの指定がされていない
- 対処法1 : 強引に charset を変更

$ cd /usr/share/mysql/charsets/
# cp latin1.conf ujis.conf
# chown mysql:root ujis.conf

- my.cnf の編集

# vi /etc/mysql/my.cnf

[client]
character-sets-dir=/usr/share/mysql/charsets
[mysqld]
default-character-set=ujis
[mysql]
default-character-set=ujis


- 結果
  ダメ

# cp latin1.conf ujis.conf

  あたりが強引すぎな気がする
  ujis.conf ないかな?
- 対処法2 : SoftAgency のパッケージを利用する
  /etc/apt/sources.listに以下を追加

deb http://www.softagency.co.jp/mysql/Downloads/woody mysql400/
deb http://www.softagency.co.jp/mysql/Downloads/sarge mysql/


  を追加
- インストール結果

# aptitude install mysql-server

  依存関係問題でダメ
- いったん remove

# aptitude remove mysql-server mysql-client mysql-common
# aptitude install mysql-server mysql-client mysql-common

  インストール成功
  しかし起動せず.
  いったんあきらめ.
- 対処法3 : ソースから ujis.conf だけ抜こう

$ wget ftp://ftp.softagency.co.jp/mysql/tcx/Downloads/mysql-4.0.15.tar.gz
$ tar xzvf mysql-4.0.15.tar.gz
$ cd mysql-4.0.15/
$ ./configure --with-charset=ujis --with-extra-charsets=all
$ make

- 補足
  euc-jp なら ujis
  shift_jis なら sjis
  と読み替えること
- ujis.conf が見つからない
  終了
- 対処法4 : もう一回 SoftAgency のパッケージの使用を試みる
  /var/log/mysql/mysql.err を見ると /var/run/mysqld が無いとおこられていた.

# mkdir /var/run/mysqld
# chown mysql:mysql /var/run/mysqld

- 設定ファイルが2つ
  /etc/mysql/my.cnf ではなく
  /etc/my.cnf を変更しなくてはならない
  どうやら mysql が unix socket しか open していないようなので
  port = 3306 のコメントアウトを取り除く

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
[mysqld]
default-character-set   = ujis
port        = 3306
socket      = /var/run/mysqld/mysqld.sock


- 結果
  起動成功.
  日本語のソートも出来ている.
- Reference
  bin5.info - MySQL の勧め
  http://bin5.info/useful/php/mysql_01.html
  MySQL Reference Manual for version 4.0.12. - 4 データベース管理
  http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_MySQL_Database_Administration.html#Character_sets
  Soft Agency - 実践MySQL / なにから手をつけましょう?
  http://www.mysql.jp/mysql/TIPS/begin.html
  Soft Agency - 実践MySQL / MySQLのクライアント
  http://www.mysql.jp/mysql/TIPS/clients.html
  Soft Agency - 実践MySQL / MySQLの日本語文字コード対応
  http://www.mysql.jp/mysql/TIPS/jp.html
  Soft Agency - MySQL 日本語バイナリ
  http://www.mysql.jp/mysql/bin/
  たぐちさんぷろじぇくと - postfixのエラー (mysql が unix socket のみを listenしていた)
  http://www.taguchi.org/