「MySQL」カテゴリーアーカイブ

MySQLで全角マイナス

MacからMySQLに全角マイナスを含むデータを(phpMyAdminを使って)入力した。例えば「HISA−123」だったとしよう。これをWindowsで検索するとヒットしない。よく調べるとマイナス記号が検索できていないことが判明(部分一致でISAとか23ならヒットする)。

  • MySQL 5.0 (utf8_unicode_ci)
  • PHP 5.0 (UTF-8)

なんでそんなことになるのかいろいろと調べたところ、Macで全角マイナスを入力するとUTF8コード「E28892」(MINUS SIGN)が使われます。ところがWindowsの場合はUTF8コード「EFBC8D」(FULLWIDTH HYPHEN-MINUS)が使われます。

Macで入力した全角マイナス(UTF8コード「E28892」)は全角マイナスとは別の文字とみなされるらしい。というのもMySQLではutf8_unicode_ciで記録しているテーブルの検索は全角と半角を区別しないし類似文字も包括して検索してくれる。例えばカタカナの「ベ」はひらがなの「べ」でも検索できるし、ひらがなの「へ」や「ぺ」でもカタカナの「ヘ」や「ペ」でも半角カタカナの「ヘ」でも「ベ」でも「ペ」でも、「ベ」を検索できる。だから半角マイナスで検索すれば半角だろうが全角だろうがマイナス記号はまとめてヒットする。たしかにWindowsで入力した全角マイナスは、半角マイナスで検索してもヒットする。ところがMacで入力した全角マイナス(UTF8コード「E28892」)はマイナス記号とみなしてくれてないらしい。やっかいな問題だ

とりあえず、MySQLのreplace関数を使って可能性がありそうなカラムのE28892をEFBC8Dに置換するSQL文をときどき実行して対処するしかないのかな。

Mac mini サーバー構築@Leopard (1)

MySQL

Mac mini で簡易サーバーを構築したので手順をメモっとく。

MySQL のインストール

今回インストールしたのは MySQL 5.0.67

MySQL の公式サイトから Mac OS X (package format) Mac OS X 10.5 (x86)をダウンロードする。

インストーラパッケージ(mysql-5.0.67-osx10.5-x86.pkg)なので普通にインストールできる。

終わったら MySQLStartupItem.pkg(MySQLの自動起動スクリプト)もインストールする。

んでもって Mac mini を再起動(何かインストールしたら何も考えず再起動)したらインストールは終わり。

MySQL の設定

ターミナルを起動して
/usr/local/mysql/bin/mysqladmin -u root password パスワード
をやって root のパスワードを設定する。続いて
/usr/local/mysql/bin/mysql -u root -p
を入力すると、Enter password: とパスワードを聞かれるからさっき設定したパスワードを入力する。これでちゃんとMySQL が起動してることを確認したら
exit;
を入力して MySQL との接続を終了してから、ターミナルを終了する。

Finder の移動メニューからフォルダへ移動…を使って
/usr/local/mysql/support-files/
を開くと MySQL 設定ファイルのサンプルが

  • my-small.cnf(搭載メモリ64MB以下)
  • my-medium.cnf(搭載メモリ128MB以下)
  • my-large.cnf(搭載メモリ512MB以下)
  • my-huge.cnf(搭載メモリ1GB~2GB以下)
  • my-innodb-heavy-4G.cnf(搭載メモリ4GB&InnoDB)

の5つあるので、Mac mini の搭載メモリの様子を見ながら適当な設定ファイル(搭載メモリが 1G だけど MySQL 以外にも同時に動かすソフトがあるから今回は my-large.cnf)をデスクトップにコピーする。

コピーした設定ファイルの名前を「my.cnf」に変更する。

んで、その my.cnf を開いて [mysqld] ディレクティブを探して
default-character-set=文字コード
character-set-server=文字コード
skip-character-set-client-handshake
の3行を追加しておく。

で、またターミナルを起動して
sudo chown root:wheel /Users/ユーザー名/Desktop/my.cnf
で my.cnf のオーナー変更。
sudo chmod 644 /Users/ユーザー名/Desktop/my.cnf
で my.cnf のパーミッション変更。
sudo mv /Users/ユーザー名/Desktop/my.cnf /etc/
で my.cnf を/etc/ディレクトリ内へ移動させたら MySQL の設定は終わり。