- ベストアンサー
MySQLへのDB::connectでfailedとなる
- MySQLにチャレンジしようとしていますが、DB::connectでfailedとなってしまいます。
- MySQL-5.0.45をインストールし、MySQL AdministratorツールからサンプルDBが見えましたが、PHP-5.2.4からPEAR::DBを使ってconnectしようとするとDB Error connect failed-24となってしまいます。
- データベースサーバが起動していない、対象のaaaデータベースが存在しない、ユーザ名/パスワードが存在しない、権限がないなどを確認しているつもりですが、うまくいきません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
OSはなんでしょうか? Linux系でしたらpsコマンドを用いて本当にmysqlが起動しているか確認するとよろしいと思います。 Windows系でしたらタスクマネージャからプロセスを確認するとよろしいです。 起動済みでしたら本当にそのプロセスが生きているか確認しましょう。 mysql -u USER -PPASSWORD これでログインできれば正常でしょう。 // 入れない場合はselinuxがらみのpermissionか // my.cnfの設定忘れのような気がします。 // 私もよくミスりますorz ケアレスミスとしては ・大文字小文字 ・ひきすうの順番が違う ・php.iniの設定ミス くらいですかね。
その他の回答 (2)
- wp_
- ベストアンサー率54% (132/242)
my.cnfはmysqlコマンドが起動しているならば設定が済んでいますよ。 basedirの項目をインストールしたディレクトリに指定しないとそもそも起動しないのです。 で、原因ですが10061のエラーは「mysqlサーバが起動していません」とのこと。 windowsでしたらサービスから起動するのが一般的と思います。 コンパネから[管理]-[サービス]を見てMysqlが自動で起動しているか確認してみてください。 そもそもmysqlがない場合は mysqld --install これで追加されるはずです。 詳細はurl参照してください。
補足
> 10061のエラーは「mysqlサーバが起動していません」..Mysqlが自動で起動しているか確認してみてください。 [サービス]からMySQLの状態を見ると、自動起動になっていて、「開始」となっています。=>起動されているとみていいですか。 再度、PHPで、CONNECTを実行しましたが、エラーは同じでした。 接続失敗:DB Error: connect failed-24 [nativecode=Can't connect to MySQL server on 'localhost' (10061)] ** mysqli(mysqli)://pearusr:PASSWORD@localhost/pear 他に、どこを確認すればいいでしょうか。
- wp_
- ベストアンサー率54% (132/242)
mysqlが正常であればあとはdsnの異常か、そもそもpearに異常があるか、しかなさそうですね。 // my.cnfなどの設定はmysqlがwindowsと違うパーティションにインストールされているときなどに // 設定が必要になります。 $db->getMessage()や$db->getDebugInfo()は何を返すのでしょう。
補足
回答ありがとうございます。 (1)インストール場所 db(\mysqldatafiles)をe:\に設定してます。 my.cnf とは、どこにあって、どう確認すればいいでしょうか。 (2)エラー表示内容 getMessage() = DB Error: connect failed getCode() = -24 getDebuginfo()= [nativecode=Can't connect to MySQL server on 'localhost' (10061)] ** mysqli(mysqli)://root:PASSWORD@localhost/pear 基本的なことが、間違っているのでしょうが、初心者でよくわかりません。 よろしくお願いします。
補足
回答ありがとうございます。 OSは、Windows2000です。 mysqlコマンドは、正常に返ってきて、テーブル内容もselectできました。 php.iniの設定については、mysql関連は extension=php_mysqli.dll だけ、設定してます。他に設定があるのでしょうか。 DB::connectのパラメタについては、 $dsn=array( "phptype"=>"mysqli", "username"=>"root", "password"=>"root", "hostspec"=>"localhost", "database"=>"pear"); $option=array( "autofree"=> TRUE, "debug"=>3, "portability"=> DB_PORTABILITY_ALL); $db=DB::connect($dsn,$option); としてます。 どこが違うのでしょうか。