とみたです。

On Thu, 16 Oct 2003 18:38:59 +0900
Takahiro Kambe <taca / back-street.net> wrote:

> ざっとソースを眺めると"localhost"がホスト名として指定されると、UNIX
> domainのソケットを使って接続しようとするようにhard codingされています。

そうです。一応、互換のために、MySQL の C ライブラリの libmysqlclient.c 
と同じ振る舞いにしてあります。

本当に localhost に TCP 接続したい場合は "127.0.0.1" を指定する必要が
あります。

> UNIX domainのソケットのアドレス、すなわちパス名は、
> 
>      - newの引数
>      - 環境変数MYSQL_UNIX_PORT
>      - "/tmp/mysql.sock"
> 
> の順で、最初に指定されたものが使用されるようです。というわけで、実際に
> MySQLのサーバが接続を待っているUNIX domainのソケットを、以上のように指
> 定する必要があるのでしょう。

MySQL をソースから普通にコンパイルすると "/tmp/mysql.sock" が使われる
ので、それをソースに埋め込んでます。が、Red Hat Linux などでは異なるパ
スが使われているようなので、それに対応するためには、mysql.rb の 
MYSQL_UNIX_ADDR を変更する必要があります。

# 頑張って自動的に検出しようとするのは大変そうなので、ドキュメントに書
# いておくだけにしようかな…。

-- 
とみたまさひろ <tommy / tmtm.org>