php artisan migrate, a obtenu l'erreur suivante:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
NB: php -v est 5.5 et mysql -v est 5.5 depuis le terminal Voici une partie de mon config/database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
J'ai essayé de remplacer localhost par 127.0.0.1 sans succès. Aide aimablement..
Edit: J'ai ajouté ces trois lignes dans mon php.ini
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
J'ai aussi ajouté ce lien symbolique:
Sudo mkdir /var/mysql
cd /var/mysql && Sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Mais cela n'a pas résolu. J'ai aussi tiré un nouveau projet laravel de git et ai rencontré la même erreur après composer install
puis php artisan migrate
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
La version mac est 10.7.4
Si vous utilisez MAMP, veillez à ajouter le unix_socket
clé avec une valeur du chemin que le mysql.sock
réside dans MAMP.
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => 'database',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Tout d'abord, récupérez votre emplacement unix_socket.
$ mysql -uroot -p
Entrez votre mot de passe mysql et connectez-vous à votre serveur mysql en ligne de commande.
mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------+
| socket | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
Votre unix_soket pourrait être différent.
Ensuite, vous avez 2 solutions pour résoudre votre problème:
(1) Change ton config/database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
(2) Changez votre php.ini, trouvez votre php.ini
fichier de
<? phpinfo();
Vous pouvez peut-être installer beaucoup de php avec des versions différentes, alors s'il vous plait, ne supposez pas l'emplacement de votre fichier php.ini, récupérez-le à partir de votre 'phpinfo';
Changez votre php.ini:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Puis redémarrez votre Apache ou php-fpm.
Avait le même problème, mais cela fonctionne pour moi maintenant.
Si quelqu'un a encore des problèmes, essayez ceci:
bootstrap/start.php
contient votre nom d'hôte actuel, pas le nom de votre hôte virtuel. Entrez hostname
dans le terminal pour obtenir votre nom d’hôte. Comme c'est un tableau, je pense que vous pouvez entrer à la fois votre nom d'hôte et le (s) nom (s) de votre/vos hôte (s) virtuel (s).Si vous utilisez XAMPP, la solution est la suivante:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'Host' => 'localhost'
)
Cela fonctionne pour moi dans Laravel 5.0, modifiez le DB_Host = 127.0.0.1: 3306 dans le fichier .env.
Les autres réponses ne fonctionnent pas ...
Pour Laravel 5.0+ modifier localhost
en 127.0.0.1
dans votre fichier .env avant de jouer avec Unix Sockets, etc. - cela a fonctionné pour moi.
Noobs beware: Si vous utilisez Laravel 5 et utilisez du matériel d'apprentissage plus ancien, sachez que la structure des dossiers a considérablement évolué par rapport aux versions précédentes, même si cela semble être pour le mieux - consultez cet article. https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace
Si vous utilisez la version Laravle 5.1.11 + MAC + MAMPP
vous devez ajouter "Unix_socket" dans le fichier "yourapp" /app/config/database.php
'mysql' => [
'driver' => 'mysql',
'Host' => env('DB_Host', 'localhost'),
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Le paramètre Unix_socket a été ajouté au lecteur de configuration mysql ci-dessus.
Une autre solution consiste à ajouter le numéro de port dans la clé de l'hôte. Dans ce cas, MAMP utilise le 8889 par défaut:
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost:8889',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),