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
La première ligne du message d'erreur décrit le type d'erreur: "PDOException". La ligne suivante affiche PDO::errorInfo
, c'est-à-dire:
- Code d'erreur SQLSTATE (identificateur alphanumérique à cinq caractères défini dans la norme ANSI SQL).
- Code d'erreur spécifique au pilote.
- Message d'erreur spécifique au pilote.
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.
Vérifiez votre DB_Host
dans votre fichier .env
DB_Host=http://localhost/ --> DB_Host=localhost
php artisan config:clear
cela vous aidera à vider la configuration en cache
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.
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
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".
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.
J'espère que ça aide.
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.
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.