2

これは、WAMP / Windows 7 にインストールした PHP 5.3.3 では機能しません。

mysql_connect('localhost', 'root', '');

の後Maximum execution time、次のエラーが表示されます。

警告: mysql_connect() [function.mysql-connect]: [2002] 接続先が失敗したため、接続試行に失敗しました (tcp://localhost:3306 経由で接続しようとしています)

警告: mysql_connect() [function.mysql-connect]: 接続先が一定時間後に適切に応答しなかったため、接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました。

これは機能します:

mysql_connect('127.0.0.1', 'root', '');

PHP docsから、これと関係があるかどうか疑問に思っています:

「localhost」または「localhost:port」をサーバーとして指定すると、MySQL クライアント ライブラリはこれをオーバーライドし、ローカル ソケット (Windows では名前付きパイプ) に接続しようとします。TCP/IP を使用する場合は、「localhost」の代わりに「127.0.0.1」を使用します。MySQL クライアント ライブラリが間違ったローカル ソケットに接続しようとする場合は、PHP 構成と同様に正しいパスを設定し、サーバー フィールドを空白のままにする必要があります。

これは私のphp.iniからのものです:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =

これはバグですか、それとも何が起こっているのですか?


更新: MySQL 5.1.36 を使用していますが、それ以外の場合は接続できます。言い忘れましたが、これは PHP 5.3.0 および 5.2.11 で動作します。もちろん、 に変更localhostする127.0.0.1こともできますが、 を使用できない理由を知りたいですlocalhost


更新 2127.0.0.1 localhost : hosts ファイルに追加 (コメント解除) すると機能しました。しかし、なぜこれが必要なのですか?

4

4 に答える 4

1

PHPでバグを報告しました。問題は MySQL にあり、ドメインの可能なすべての IP アドレスに正しく接続されていないことに関係しています

解決?絶対に必要でない場合は、データベースへの接続にホスト名を使用しないでください。これは、パフォーマンスにもプラスの影響を与える可能性があります。

于 2010-10-26T08:06:17.560 に答える
1

PHP 経由での接続に問題があるだけですか、それともコマンド ラインからも MySQL への接続を確立できませんか? まったく接続できない場合は、サービスが実行されていて、ポート 3306 でリッスンしていることを確認します。

localhost を 127.0.0.1:3306 に変更することもできます。

または

$cfg['サーバー'][$i]['ホスト'] = 'localhost';

$cfg['サーバー'][$i]['ホスト'] = '127.0.0.1';

于 2010-10-25T14:00:12.010 に答える
1

?に追加127.0.0.1 localhostしてみてください。C:\Windows\System32\drivers\etc\hosts

于 2010-10-25T14:04:18.297 に答える
-1

これは実際にはphp_mysqlドライバーのバグです。http://bugs.php.net/bug.php?id=48082を参照してください

于 2010-12-06T00:59:52.140 に答える