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/