2009-11-30 12 views
26

私のコードは昨日すべて正常に機能していましたが、今日は突然データベースに接続したくありません。私はその設定やコード上の設定を変更していないし、ソフトウェアも更新していない。私はすべてがこれです:PHP/PDOを使用してMySQLに接続するときのエラー

new PDO('mysql:host=localhost;port=3306;dbname=test', 'username', 'password');

そして、私はこれと言って素敵な例外メッセージが表示されます:

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in ...

事がある:私は明らかにUnixソケットを使用して接続しようとしていませんよTCP/IPを使用します。私は間違って何をしていますか?私がここで紛失しているものはありますか?

ありがとうございました。

+2

でこの設定を使用できますか? –

+0

関連する/ dupe:[警告:mysql_connect \(\):\ [2002 \]そのようなファイルやディレクトリはありません\(unix経由で接続しようとしています:///tmp/mysql.sock \)](http:// stackoverflow .com/q/4219970) – blahdiblah

答えて

79

あなたはUnixソケットを使用しています。 "localhost"を読むとき、MySQLクライアントライブラリはそれをTCPホスト "localhost"と解釈せず、その名前を解決しますが、デフォルトのSocketの場所を使用します。ローカルマシン上でTCPを使用するには、ホスト名として127.0.0.1を使用する必要があります。

DSNにの代わりにunix_socketという過去の使用を指定します。 localhostで使用されるソケットの位置は、コンパイル時に、またはのpdo_mysql.default_socketを使用する一部のバージョンのPHPで定義できます。

+0

これを無効にする方法はありませんか?つまり、昨日とまったく同じように働いていたということです。そして、どうすればサーバ上のソケットを有効にして動作させることができますか? –

+0

設定ファイルに「localhost」で動作するPHPスクリプトがありました.RAMのアップグレードと再起動後、コンソールからトリガされたときに動作しなくなりましたが、ブラウザでも動作しました。 'localhost'を '127.0.0.1'に変更すると修正されました。 –

+0

127.0.0.1はこのトリックを行った。ありがとう! – Antony

7

PDOを使用してMySQLへの接続に関するPHPのドキュメントから:非常に最後のノートPDO_MYSQL DNS

は言う:

UNIXのみ:ホスト名はlocalhost「がに設定されている

"の場合、 サーバーへの接続はドメインソケットを介して行われます。 PDO_MYSQLが libmysqlに対してコンパイルされている場合、ソケット・ファイルの場所はコンパイルされたlibmysqlの になります。 PDO_MYSQLがmysqlndに対してコンパイルされている場合、 のデフォルトソケットはpdo_mysql.default_socketの設定で設定できます。あなたが正しくあなたにmysql.sockファイルを検索し、php.iniであなたにmysql.sockの場所

  1. を設定する必要があります。この問題を解決するために、そう

。共通の場所:

  • /tmp/mysql.sock
  • /tmp/mysql/mysql.sock
  • /var/mysql/mysql.sock
  • たり、内部のためにMAMPやLAMPの外観を使用している場合tmpフォルダのmysql
  • 編集php.iniファイルのための、適切にはpdo_mysql.default_socket

  • の値を設定しましたApacheサーバーを再起動して、PHPの変更を取得します。iniファイル

  • 0

    Drushのドキュメントには、hereというドキュメントがあります。

    2

    私は、この行を追加:

    'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', 
    

    とすべてが順調でした。あなたのMySQLサーバが動作していることを確認した

    Ubuntuで
    +3

    この行はどこに追加しましたか? –

    1

    は、あなたは、php.ini

    pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock 
    
    関連する問題