web-dev-qa-db-fra.com

SQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo a échoué: nom ou service inconnu

je télécharge à partir de https://github.com/luciddreamz/laravel laravel pour openshift puis transférez-la sur mon référentiel via github. ce code pour se connecter à la base de données ne fonctionne pas . le problème est que la variable de chargement à partir du fichier .env qui se trouve à la racine du projet

pour résoudre ce problème 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

mon erreur: SQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo a échoué: nom ou service inconnu

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

16
hjvcghcghchg

La première ligne du message d'erreur décrit le type d'erreur: "PDOException". La ligne suivante affiche PDO::errorInfo , c'est-à-dire:

  1. Code d'erreur SQLSTATE (identificateur alphanumérique à cinq caractères défini dans la norme ANSI SQL). 
  2. Code d'erreur spécifique au pilote. 
  3. Message d'erreur spécifique au pilote. 
  • "HY000" est une erreur générale du serveur (voir Codes et messages d'erreur du serveur dans la documentation MySQL).
  • "2002" est un code d'erreur du client MySQL qui signifie "Impossible de se connecter au serveur MySQL local via un socket" (voir ( Codes d'erreur et messages du client dans les documents MySQL).
  • Le code d'erreur et le message spécifiques au pilote ("php_network_getaddresses: getaddrinfo failed: nom ou service inconnu") vous indiquent que PDO n'est pas en mesure de résoudre le nom d'hôte.

La trace de pile que vous avez jointe, ligne 3, révèle que vous n'avez pas spécifié les paramètres de connexion à la base de données dans le fichier de configuration. L'erreur apparaît lorsque vous testez sur local, non? Vous devez mettre à jour /.env avec les paramètres de connexion à la base de données.

28
bostaf

Vérifiez votre DB_Host dans votre fichier .env

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

php artisan config:clearcela vous aidera à vider la configuration en cache

3
gauravbhai daxini

Il semble que vous n’ayez pas ajouté de base de données MySQL à votre application. OR vous l’aurez ajoutée après avoir installé laravel. Dans ce cas, vous devez arrêter et redémarrer (et non pas redémarrer) votre application pour qu'elle récupère vos variables d'environnement. Si vous n'avez pas encore ajouté de base de données, vous devez ajouter l'une des cartouches mysql, puis arrêter et démarrer votre application à l'aide des commandes précédemment affichées.

2
user2879327

J'utilise Laravel avec Docker. J'ai résolu ce problème en modifiant la valeur de DB_Host de localhost en mysql.

DB_Host=mysql
1
Hyder B.

J'avais le même problème et tout le monde en a parlé est lié à la configuration DNS, ce qui est logique, car votre conteneur ne sait peut-être pas comment résoudre le nom du domaine où se trouve votre base de données.

Je suppose que vous pouvez configurer cela au moment où vous démarrez votre conteneur, mais je pense qu'il est préférable de le configurer une fois pour toutes.

J'utilise Windows 10 et dans ce cas, l'interface graphique de Docker nous donne quelques facilités.

Faites un clic droit sur l'icône du docker dans la barre des tâches et sélectionnez l'élément "Paramètres".

 Docker's options

Ensuite, dans la fenêtre du docker, sélectionnez la section "Réseau" et modifiez l'option DNS de "Automatique" à "Fixe", puis cliquez sur "Appliquer". Docker va redémarrer tout seul par la suite. J'ai mis le DNS de Google (8.8.8.8) et cela a bien fonctionné pour moi.

 docker's network section with dns config

J'espère que ça aide.

1
mukade

Tout comme sur FYI, d’autres subissent soudainement cette situation sur une installation Laravel qui fonctionnait auparavant (auparavant):

Mon environnement Laravel se trouve sur une Ubuntu VirtualBox hébergée sur un ordinateur portable Win-10.

J'ai utilisé mon téléphone pour partager Internet via USB et j'ai soudainement commencé à rencontrer ce problème. J'ai changé pour utiliser le téléphone comme point d'accès sans fil et le problème a disparu. Ceci est un problème de serveur de noms/réseau et n'est pas spécifique à Laravel ou MySQL.

0
ChronoFish

Nous utilisons symfony avec doctrine et nous automatisons actuellement le déploiement. J'ai eu cette erreur alors que je n'avais simplement pas fourni les bonnes bases de données dans parameters.yml (J'utilisais doctrine: migrations: migrate)

Ce fil de discussion m'a envoyé un peu à la poursuite de l'oie sauvage, alors je laisse ça ici pour que les autres n'aient pas à le faire.

0
Douwe