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
エラーメッセージの最初の行は、エラーの種類を説明しています: "PDOException"。次の行は PDO::errorInfo
を表示します、つまり:
- SQLSTATEエラーコード(ANSI SQL標準で定義されている5文字の英数字の識別子)。
- ドライバー固有のエラーコード。
- ドライバー固有のエラーメッセージ。
3行目に添付したスタックトレースは、構成ファイルでデータベース接続パラメーターを指定しなかったことを示しています。ローカルでテストするとエラーが表示されますよね? /.env
を実際のデータベース接続パラメーターで更新する必要があります。
DB_Host
ファイルで.env
を確認します
DB_Host=http://localhost/ --> DB_Host=localhost
php artisan config:clear
それはあなたを助けます、キャッシュされた設定をクリアします
MySQLデータベースをアプリケーションに追加しなかったようです。OR laravelのインストール後に追加しました。その場合、環境変数を取得するために、アプリケーションを停止して再起動するのではなく、起動する必要があります。 (rhc app stop、rhc app start)。データベースをまだ追加していない場合は、mysqlカートリッジのいずれかを追加してから、前に示したコマンドを使用してアプリケーションを停止および開始する必要があります。
DockerでLaravelを使用しています。 DB_Host
の値をlocalhost
からmysql
に変更することで、この問題を解決しました。
DB_Host=mysql
私は同じ問題を抱えていて、誰もがこれがDNS構成に関連していることについて話していましたが、これは理にかなっています。
コンテナを起動した瞬間に設定できると思いますが、これを一度設定する方が良いと思います。
私はWindows 10を使用していますが、この場合はdocker's guiがいくつかの機能を提供します。
トレイバーのドッカーのアイコンを右クリックして、[設定]項目を選択します。
次に、Dockerのウィンドウで[ネットワーク]セクションを選択し、DNSオプションを[自動]から[固定]に変更して、[適用]をクリックします。その後、Dockerは自動的に再起動します。 GoogleのDNS(8.8.8.8)をパットしましたが、うまくいきました。
それが役に立てば幸い。
doctrineでsymfonyを使用しており、デプロイメントの自動化を進めています。 parameters.ymlで正しいdb credsを指定しなかったときにこのエラーが発生しました(doctrine:migrations:migrateを実行していました)
このスレッドは私にちょっとした野生のガチョウの追跡を送ってくれたので、他の人が必要としないようにここに置いておきます。
他のユーザーへのFYIと同様に、(以前は)正常に機能していないLaravelインストールでこれを突然経験します。
私のLaravel環境は、Win-10ラップトップでホストされているUbuntu VirtualBox上にあります。
携帯電話を使用してUSB経由でインターネットを共有すると、突然この問題が発生し始めました。電話をワイヤレスホットスポットとして使用するように変更すると、問題はなくなりました。これはネームサーバー/ネットワークの問題であり、LaravelまたはMySQLに固有のものではありません。
私の場合、すべてが正しくセットアップされましたが、Docker
インフラストラクチャにはより多くのRAMが必要でした。 Docker for Macを使用しています。デフォルトのRAMは約1 GBで、MySQLが約1.5GbのRAMを使用するため(おそらくクラッシュします???)、Dockerを変更しますRAM使用率レベル3〜4 Gbで問題が解決しました。
Docker
の使用中に誰かがこの問題に直面した場合、SQLのバージョンを使用していることを確認してください。
私の場合:MYSQL_VERSION=latest
はMYSQL_VERSION=5.7
に変更されます。
次に、docker system Prune -a
を使用してDockerイメージを再起動する必要があります。
また、.env
でDB_Host=mysql
を変更する必要があります。そして、php artisan config:clear
を実行します。
誰かを助けると思う。
Shopwareをdockerで使用している場合は、最初に./psh.phar ssh
を実行する必要があります。次に、bin/console
コマンドが機能します