LoginSignup
42
33

More than 5 years have passed since last update.

migrateで[PDOException]SQLSTATE[HY000] [2002] No such file or directoryと出た時のメモ

Last updated at Posted at 2017-08-03

環境

  • PC: mac
  • Laravel: 5.1

内容

マイグレーションファイルを作成し、$php artisan migrate を実行すると

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory

とエラーが、、、MySQL接続エラーらしい。database.phpと.envは設定したため、ハマった

解決方法

database.phpで unix_socket を設定すればいい
unix_socketはMySQLから $show variables like '%sock%'; を実行

+-----------------------------------------+-----------------------------------------+
| Variable_name                           | Value                                   |
+-----------------------------------------+-----------------------------------------+
| performance_schema_max_socket_classes   | 10                                      |
| performance_schema_max_socket_instances | 322                                     |
| socket                                  | /Applications/MAMP/tmp/mysql/mysql.sock |
+-----------------------------------------+-----------------------------------------+
database.php
'mysql' => [
      'driver'    => 'mysql',
      #省略#
      'unix_socket' => 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
],

これでマイグレーションできる

どうやらlocalhostの場合はunixSocketで通信を行い、
127.0.0.1の場合はポート経由で通信を行っているらしい。 へぇ〜

unixSocketで接続しようとするが、mysql.sockが見つからないため、No such file or directory

ソケットについてのお話。分かりやすく説明してる人がいたのでお茶を濁す、、、
調べなきゃ寝れない!と調べたら余計に寝れなくなったソケットの話

.env
DB_HOST=127.0.0.1

とするとunix_socketの指定をしなくてもマイグレーションできる

参考

42
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
33