Utilisation de Mac OS X et Homestead 2.2.1 avec Laravel 5.2.
En terminal (dans Homestead dans mon dossier de projet), je peux faire de l'art php pour voir toutes les commandes disponibles. Lorsque j'essaie d'exécuter php artisan migrate, une erreur de connexion survient:SQLSTATE[HY000] [2002] Connection refused
J'ai configuré un projet Laravel avec ces .env settings
DB_Host=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=Homestead
DB_PASSWORD=secret
J'ai également essayé localhost pour DB_Host et root pour DB_USERNAME et DB_PASSWORD. Et toutes les variations possibles de ceux-ci mis ensemble!
Dans Sequel Pro (application de gestion de la base de données), je peux me connecter avec ces paramètres
Host 127.0.0.1
Username Homestead
Password secret
Database tcv
Port 33060
Mais cette base de données est évidemment vide, car je ne peux pas y migrer depuis le terminal ...
Autant que je sache, il s’agit d’un problème de configuration, car je peux y accéder avec Sequel Pro. Mais honnêtement, je n'ai aucune idée effrayante de ce qui ne va pas.
Merci pour l'aide !!
MODIFIER
Pour une raison quelconque, la même erreur SQLSTATE[HY000] [2002] Connection refused
apparaît lors du déplacement de mon projet vers MAMP et de l'exécution de la migration php artisan.
Maintenant je suis complètement perdu ...
Problème
Dans Laravel, vous avez config/database.php
où se trouve toute la configuration pour la connexion. Vous avez également un fichier .env
dans le répertoire racine de votre projet (que tout le monde utilise pour gagner du temps). Cela contient des variables que vous pouvez utiliser pour l'ensemble du projet.
Sur un projet standard L5, la section MySql de config/database.php
ressemble à ceci:
'mysql' => [
'driver' => 'mysql',
'Host' => env('DB_Host', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
Notez qu'il n'y a pas de port défini!
Bien que dans mon fichier .env
j'avais défini DB_PORT=33060
. Mais ce value (3306)
n'a jamais été lu dans le config/database.php
.
Donc, ne soyez pas un idiot comme moi et oubliez de vérifier le fichier database.php
.
'port' => env('DB_PORT', 3306),
à votre config/database.php et définissez cette valeur dans .env comme ceci DB_PORT=33060
Je viens de rencontrer ceci et j'ai constaté que le fait de changer cela dans le fichier .env de 127.0.0.1 en localhost le corrigeait.
DB_Host = localhost
Si vous utilisez MAMP sur un Mac OS, ajoutez la ligne suivante à votre fichier de configuration de base de données mysql
'unix_socket' => env ('DB_SOCKET', ''),
et sur votre fichier .env ajouter
DB_SOCKET =/Applications/MAMP/tmp/mysql/mysql.sock
Une autre solution pour quiconque a un problème. Tous les paramètres étaient corrects, mais pour une raison quelconque, mes modifications n’ont pas été mises à jour. Laravel met en cache le fichier de configuration (que je trouve complètement stupide).
Voici ma solution après la mise à jour des configs:
php artisan config:clear
J'avais ce problème. Lors de la connexion à Sequel Pro, je dois utiliser 33060 en tant que port, mais dans le fichier .env, il doit s'agir de 3306. Le fichier .env contenait 33060. Changé à 3306 et cela a fonctionné.
Utilisez localhost au lieu de 127.0.0.1 (dans votre fichier .env), puis exécutez la commande "php artisan config: cache"
J'ai eu le même problème, essayez ça marche
DB_Host=localhost
Ceci est une solution simple. Votre base de données mysql a perdu sa connexion au serveur. Si vous utilisez un serveur local, lancez ceci dans votre terminal:
mysqld
Cela va reconnecter votre base de données. Ensuite, si vous utilisez homebrew, lancez:
brew services start mysql
Cela connectera automatiquement votre base de données lors de la connexion.
Dans mon cas, cette erreur est apparue en bleu. En regardant cette erreur mystérieuse, j'ai réalisé que j'essayais d'exécuter la commande en dehors de VM ...
J'ai le même problème mais je dois changer entre le localhost et 127.0.0.1 .
Lors de la visualisation du site Web dans un navigateur, je dois accéder à la base de données que j'utilise.
localhost
Mais lorsque je dois effectuer des migrations ou des ensemencements dans le terminal, je dois les utiliser.
127.0.0.1
J'utilise actuellement un vagrant , virtual box et Homestead .
Ce serait bien de ne pas avoir à continuer à feuilleter les deux.
Il est possible que votre 'mysql' n'ait pas démarré ou qu'il ne soit pas sur le port '3306'
J'ai eu un problème similaire et aucune suggestion placée ici ne m'a aidé ……. Dans mon cas, 127.0.0.1 fonctionne correctement.
APP_URL=127.0.0.1
DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX
Si vous utilisez Homestead
, vous devriez l'exécuter avec le port mysql par défaut. Ainsi, au lieu d'utiliser DB_PORT=33060
, vous devriez utiliser DB_PORT=3306
dans votre fichier .env. Pensez également à exécuter vos commandes php artisan migrate
dans votre installation Homestead et tout devrait bien se passer.
J'espère que cela pourra aider.
Ok mise à jour, il semble que l'hôte n'est pas le problème mais en fait le port.
C'est donc en fait le port 3306 pour les tests du navigateur et pourtant pour le terminal et Sequel Pro 33060 . Pourrait-il avoir quelque chose à voir avec l'ajout dans Homestead.yaml et le définir ici?
En lisant la configuration par rapport à Laravel, il est écrit:
MySQL: 33060 → Transférer à 3306
Moi, j'utilise vagabond, mais j'exécute en dehors de la boîte un artisan php, donc fondamentalement, il n'a pas la permission
La seule chose qui a résolu le problème pour moi a été de mettre les détails de connexion dans config/database.php au lieu du fichier .env . J'espère que cela t'aides
Après avoir mis toute la configuration sur le fichier .env, si vous exécutez déjà php artisan serve, relancez-le.