はじめに
MAMP環境で作成したLaravelプロジェクトをHerokuにデプロイしてたのですがAWSの学習をかねて本番環境を移行してみました。
#環境
- 開発環境
- PHP 7.3.6
- Laravel 5.8.35
- MAMP
- 本番環境
- Heroku
- 移行する本番環境
- AWS
- EC2(Amazon Linux 2 AMI)
- RDS(MySQL)
- AWS
詰まった点
EC2にプロジェクトをgit cloneしブラウザでプロジェクトが開ける状態が出来、RDSのMySQLに
php artisan migrate
コマンドでテーブルを作成できたら完成!、、というところでエラー発生
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = and table_name = migrations and table_type = 'BASE TABLE')
at /var/www/html/namilog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
1 PDOException::("SQLSTATE[HY000] [2002] No such file or directory")
/var/www/html/<app名>/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
2 PDO::__construct("mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=", "<db名>", "<パスワード>", [])
/var/www/html/<app名>/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
Please use the argument -v to see more details.
エラーの詳細をみてみるとException traceの2にMAMPで開発を行なった際のunix_socketが指定されている。
PDO::__construct("mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=", "<db名>", "<パスワード>", [])
/var/www/html/<app名>/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
調べてみると、unix_socketはlocalhost内で通信を行う際に必要なものらしくて、今回はEC2のIPアドレスで通信を行うので必要ないことがわかりました。
なのでlaravelプロジェクトのconfig/database.phpファイル内のunix_socketのパスを削除。
database.php
~省略~
'mysql' => [
~省略~
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
~省略~
]
~省略~
その後改めてphp artisan migrate を実行するとうまくテーブルが作成されました。
間違って解釈している可能性があるので異なっている点がありましたら指摘してくださるとありがたいです。
参考にした記事