本記事の目的
Laravel勉強中の筆者がmigrate時に経験したエラーと解決方法をまとめました。
筆者と同様に勉強中の方やエラーで悩まれている方の参考になればと思い投稿いたしました。
なお勉強中のため内容が足りなかったり、誤った記載があるかもしれません。
その際は指摘をビシバシしてもらえると嬉しいです!
宜しくお願いいたします。
環境
- macOS Catalina(バージョン10.15.4)
- Laravel Framework 6.18.18
- MAMP
遭遇したエラー
事前にphpMyAdminで作成したデータベースにファイルを追加するため、
ターミナルで%php artisan migrate
を実行すると
「DBサーバーに接続できないよ!」「そのようなファイルまたはディレクトリはないよ!」
下記エラーメッセージで指摘を受けました。
Illuminate\Database\QueryException:
SQLSTATE[HY000] [2002] No such file or directory
(SQL: select * from information_schema.tables where table_schema
= laravel_task and table_name = migrations and table_type = 'BASE TABLE')
at・・・・/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {
> 669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|
Exception trace:
1 PDOException::("SQLSTATE[HY000] [2002] No such file or directory")
・・・・/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
2 PDO::__construct("mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=〜省略〜[])
・・・・/vendorvendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
Please use the argument -v to see more details.
解決方法
結論、DB_HOSTを「127.0.0.1」から「localhost」に修正するとエラーが解消されマイグレーションができました。
※ターミナル
%php artisan migrate
Migrating: 2020_06_04_****_create_名称_table
Migrated: 2020_06_04_****_create_名称_table (0.04 seconds)
〜省略〜
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
〜省略〜
〜省略〜
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
〜省略〜
解決に至るまでのステップ
今回、下記ステップで作業を行いエラーの解消とphpMyAdminへのデータ登録が実現できました。
①.evファイルの確認
まず、.evファイルの中身を確認してみると以下の記載でした。
〜省略〜
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=データベースの名前
DB_USERNAME=ユーザーネーム
DB_PASSWORD=パスワード
〜以下省略〜
②次に、phpMyAdmiでMySQLの設定を確認
Hostの指定が「localhost」であることを確認。
MySQL can be administered with phpMyAdmin.
To connect to the MySQL server from your own scripts use the following connection parameters:
Host localhost
Port 3306
〜省略〜
③config>database.phpを確認
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
〜以下省略
とHostの指定が.evとphpMyAdminで異なっていることがわかりました。
エラーの原因としてHostの指定が異なっていたと考え、
Hostの指定を統一するとエラーが解消されmigrateを無事に行うことができました。
※ターミナル
%php artisan migrate
Migrating: 2020_06_04_****_create_名称_table
Migrated: 2020_06_04_****_create_名称_table (0.04 seconds)