環境
- 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の指定をしなくてもマイグレーションできる