PushChatServer dirをhtdocsフォルダーに配置し、データベースpuschatを作成して@ " http://localhost/PushChatServer/api/test/database.php "を実行しようとしました
その後、次の例外が発生しました。
このリンクを説明するために同じことをしたい http://www.raywenderlich.com/32963/Apple-Push-notification-services-in-ios-6-tutorial-part-2
私はそれをすべてやったが、この例外を受け取った
データベースに接続できませんでした。理由:メッセージ 'SQLSTATE [HY000] [2002] No application file/directory' with /Applications/MAMP/htdocs/PushChatServer/api/test/database.php:17スタックトレース:#0/Applications/MAMPの例外 'PDOException' /htdocs/PushChatServer/api/test/database.php(17):PDO-> __ construct( 'mysql:Host = loca ...'、 'root'、 'root'、Array)#1 {main}
クイックテスト(シェルで実行):
php -r "new PDO('mysql:hostname=localhost;dbname=test', 'username', 'password');"
SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリがないことは、phpがmysql.default_socketファイルを見つけることができないことを意味します。 php.iniファイルを変更して修正します。 Macではmysql.default_socket = /tmp/mysql.sock( PHP-MySQL connection not working:2002 No such file or directory )を参照してください
SQLSTATE [HY000] [1044]ユーザー 'username' @ 'localhost'のアクセスが拒否されましたおめでとうございます!これで、正しいmysql.default_socket設定ができました。 dbname/username/passwordを修正します。
PHPでPDOへの接続を作成する際のエラー も参照してください。
ホストをlocalhost
から127.0.0.1
に変更する必要があります
Laravel 4:app/config/database.php
で、ホストをlocalhost
から127.0.0.1
に変更してみてください
Laravel 5:.env
ファイルで、DB_Host
をlocalhost
から127.0.0.1
に変更します
ソース: PDOException SQLSTATE [HY000] [2002] No such file or directory
PHP 5.6.30(macOS Sierra)を使用して、次のような単純なPDOコードで同じエラーが発生しました。
$pdo = new PDO('mysql:Host=localhost;dbname=db_php', 'root', '');
そして、私は同じエラーメッセージを受け取りました。修正するために、コードの「localhost」をIP(ループバック)「127.0.0.1」に変更しました。
$pdo = new PDO('mysql:Host=127.0.0.1;dbname=db_php', 'root', '');
接続をテストするには:
$ php -r "new PDO('mysql:Host=127.0.0.1;dbname=db_php', 'root', '');"
この作品は私のためです!
データベースとローカルWebサーバーを再起動します。
うまくいくはずです!
Mysql PDOでも同じエラーが発生しました。このコードはうまくいきます!
<?php
$dsn = 'mysql:Host=127.0.0.1;dbname=testdb';
$username = 'username';
$password = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dbh = new PDO($dsn, $username, $password, $options);
?>
次のコードを取得しました: http://php.net/manual/en/ref.pdo-mysql.connection.php
これがあなたに役立つかどうかはわかりません。しかし、私はCakePHPを使用し、「ホスト」の最後にポート番号を置くのを忘れると、このエラーが発生します。
お役に立てれば!
前
'test' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'Host' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'mylogin',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
'log' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
'url' => env('DATABASE_TEST_URL', null),
]
後
'test' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'Host' => 'localhost:8080',
'username' => 'root',
'password' => 'root',
'database' => 'mylogin',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
'log' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
'url' => env('DATABASE_TEST_URL', null),
]
PDOはlocalhostを非常に特に扱います:
http://php.net/manual/en/ref.pdo-mysql.connection.php から:
注:Unixのみ:ホスト名が「localhost」に設定されている場合、サーバーへの接続はドメインソケットを介して行われます。 PDO_MYSQLがlibmysqlclientに対してコンパイルされる場合、ソケットファイルの場所はlibmysqlclientのコンパイルされた場所にあります。 PDO_MYSQLがmysqlndに対してコンパイルされる場合、pdo_mysql.default_socket設定を介してデフォルトのソケットを設定できます。
PDOとmysql_connectがlocalhostに異なる動作を与える理由。
したがって、TCP PDOとの接続を使用する場合は、localhostではなく127.0.0.1。を使用します
シェルで次のコマンドを実行すると、役立つと思います。
php artisan cache:clear
php artisan config:clear
php artisan view:clear
この同じ問題に遭遇しただけで、問題はパスワードです。チュートリアルでは、作成者はパスワードを次のようにリストします。
"d]682\#%yl1nb3"
@ Marki555の提案に従って、構成ファイルapi_config.phpを調べました。そしてそこにリストされているパスワードは次のとおりです。
"d]682\#%yI1nb3"
大文字の「I」は、dbでユーザーに設定したパスワードに小文字のlのパスワードがあるために問題が発生しましたが、実際には大文字のIを探しています。プッシュチャットのユーザーのパスワードを変更して大文字のi 、 動いた!