web-dev-qa-db-ja.com

SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo failed:名前またはサービスが不明です

https://github.com/luciddreamz/laravel Laravelからダウンロードし、openshiftを使用して、github経由でリポジトリにアップロードします。データベースに接続するためのこのコードは機能しません。問題は、プロジェクトのルートにある.envファイルから変数をロードすることです

この問題を解決するためにchange.env

# local environment only
#   for production, see .openshift/.env

APP_ENV=APPLICATION_ENV
APP_DEBUG=true
APP_URL=OPENSHIFT_APP_DNS
APP_KEY=OPENSHIFT_SECRET_TOKEN

DB_DRIVER=mysql
DB_Host=OPENSHIFT_MYSQL_DB_Host
DB_PORT=OPENSHIFT_MYSQL_DB_PORT
DB_DATABASE=OPENSHIFT_APP_NAME
DB_USERNAME=OPENSHIFT_MYSQL_DB_USERNAME 
DB_PASSWORD=OPENSHIFT_MYSQL_DB_PASSWORD

CACHE_DRIVER=apc
SESSION_DRIVER=file

私のエラー:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo failed:名前またはサービスが不明です

createConnection('mysql:Host=OPENSHIFT_MYSQL_DB_Host;port=OPENSHIFT_MYSQL_DB_PORT;dbname=OPENSHIFT_APP_NAME', 
array('driver' => 'mysql', 
      'Host' => 'OPENSHIFT_MYSQL_DB_Host', 
      'port' => 'OPENSHIFT_MYSQL_DB_PORT', 
      'database' => 'OPENSHIFT_APP_NAME', 
      'username' => 'OPENSHIFT_MYSQL_DB_USERNAME', 
      'password' => 'OPENSHIFT_MYSQL_DB_PASSWORD', 
      'charset' => 'utf8',  
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => false, 
      'name' => 'mysql'), 
array('0', '2', '0', false, '0')) in MySqlConnector.php line 20

error message

23
hjvcghcghchg

エラーメッセージの最初の行は、エラーの種類を説明しています: "PDOException"。次の行は PDO::errorInfo を表示します、つまり:

  1. SQLSTATEエラーコード(ANSI SQL標準で定義されている5文字の英数字の識別子)。
  2. ドライバー固有のエラーコード。
  3. ドライバー固有のエラーメッセージ。
  • 「HY000」は一般的なサーバーエラーです(MySQLドキュメントの サーバーエラーコードとメッセージ を参照)。
  • 「2002」は、「ソケットを介してローカルMySQLサーバーに接続できない」ことを意味するMySQLクライアントエラーコードです(MySQLドキュメントの( クライアントエラーコードとメッセージ を参照)。
  • ドライバー固有のエラーコードとメッセージ(「php_network_getaddresses:getaddrinfo failed:名前またはサービスが不明」)は、PDOがホスト名を解決できないことを示しています。

3行目に添付したスタックトレースは、構成ファイルでデータベース接続パラメーターを指定しなかったことを示しています。ローカルでテストするとエラーが表示されますよね? /.envを実際のデータベース接続パラメーターで更新する必要があります。

35
Taz

DB_Hostファイルで.envを確認します

DB_Host=http://localhost/ --> DB_Host=localhost

php artisan config:clearそれはあなたを助けます、キャッシュされた設定をクリアします

4

MySQLデータベースをアプリケーションに追加しなかったようです。OR laravelのインストール後に追加しました。その場合、環境変数を取得するために、アプリケーションを停止して再起動するのではなく、起動する必要があります。 (rhc app stop、rhc app start)。データベースをまだ追加していない場合は、mysqlカートリッジのいずれかを追加してから、前に示したコマンドを使用してアプリケーションを停止および開始する必要があります。

2
user2879327

DockerでLaravelを使用しています。 DB_Hostの値をlocalhostからmysqlに変更することで、この問題を解決しました。

DB_Host=mysql
1
Hyder B.

私は同じ問題を抱えていて、誰もがこれがDNS構成に関連していることについて話していましたが、これは理にかなっています。

コンテナを起動した瞬間に設定できると思いますが、これを一度設定する方が良いと思います。

私はWindows 10を使用していますが、この場合はdocker's guiがいくつかの機能を提供します。

トレイバーのドッカーのアイコンを右クリックして、[設定]項目を選択します。

Docker's options

次に、Dockerのウィンドウで[ネットワーク]セクションを選択し、DNSオプションを[自動]から[固定]に変更して、[適用]をクリックします。その後、Dockerは自動的に再起動します。 GoogleのDNS(8.8.8.8)をパットしましたが、うまくいきました。

docker's network section with dns config

それが役に立てば幸い。

1
mukade

doctrineでsymfonyを使用しており、デプロイメントの自動化を進めています。 parameters.ymlで正しいdb credsを指定しなかったときにこのエラーが発生しました(doctrine:migrations:migrateを実行していました)

このスレッドは私にちょっとした野生のガチョウの追跡を送ってくれたので、他の人が必要としないようにここに置いておきます。

1
Douwe

他のユーザーへのFYIと同様に、(以前は)正常に機能していないLaravelインストールでこれを突然経験します。

私のLaravel環境は、Win-10ラップトップでホストされているUbuntu VirtualBox上にあります。

携帯電話を使用してUSB経由でインターネットを共有すると、突然この問題が発生し始めました。電話をワイヤレスホットスポットとして使用するように変更すると、問題はなくなりました。これはネームサーバー/ネットワークの問題であり、LaravelまたはMySQLに固有のものではありません。

0
ChronoFish

私の場合、すべてが正しくセットアップされましたが、Dockerインフラストラクチャにはより多くのRAMが必要でした。 Docker for Macを使用しています。デフォルトのRAMは約1 GBで、MySQLが約1.5GbのRAMを使用するため(おそらくクラッシュします???)、Dockerを変更しますRAM使用率レベル3〜4 Gbで問題が解決しました。

0
zmii

Dockerの使用中に誰かがこの問題に直面した場合、SQLのバージョンを使用していることを確認してください。

私の場合:MYSQL_VERSION=latestMYSQL_VERSION=5.7に変更されます。

次に、docker system Prune -aを使用してDockerイメージを再起動する必要があります。

また、.envDB_Host=mysqlを変更する必要があります。そして、php artisan config:clearを実行します。

誰かを助けると思う。

0
mare96

Shopwareをdockerで使用している場合は、最初に./psh.phar sshを実行する必要があります。次に、bin/consoleコマンドが機能します

0
Shubham Bathla