Laravel

Laravelのデータベースの接続方法(MAMPの場合)

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel のデータベースの接続方法について記事にしました。記事では MAMP のデータベースを使っていますが、ほかのデータベースでも Laravel の設定で触るところは同じなので、参考になると思います。

また、うまくデータベースが接続していないと、

SQLSTATE[HY000] [2002] Connection refused (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

こういったエラーが出るはずです。

前提

MacOS bigsur

Laravel5.5 ~ 8

Laravel の環境構築が完了している。

MAMP でデータベース環境を作っている。

もし、まだ環境構築が終わっていない方はこちらの記事を読んでください。

⇨Laravel、PHP7.4 で環境構築する比較的簡単な方法

データベースと接続する方法

編集するファイルは.env だけ

Laravel のプロジェクトディレクトリには、.env というファイルがあります。

※VScode で開いていれば特に設定を変えずに見れますが、「.」からはじまるファイルはもしかしたら隠しファイル扱いで見れない人がいるかもしれません

そのときは、

ls -a

のコマンドで確認したり、Finder の設定で隠しファイルを表示して確認してみてください。

個人的には VScode でプロジェクトを開くことをおすすめします。

.env ファイルを開くと10行目あたりにこのような記述があります。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3336
DB_DATABASE=
DB_USERNAME=root
DB_PASSWORD=

Laravel 自体はこの6行を編集すれば OK です。

どのように編集すれば良いか?⇨MAMP を起動して確認する

というところで、MAMP を起動してみます。

MAMP image

MAMP を起動すると画像のような画面が開きます。

そこの MySQL タブに大体情報が書かれています。

ここには、Host、Port、Username、Password が書かれています。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=
DB_USERNAME=root
DB_PASSWORD=root

僕の場合は、画像にもあるとおりこのような設定になりました。

DB_HOST の項目は、127.0.0.1 でも localhost でもどっちでも僕の環境では動くので、このままにしています。

そしたら、残りは DB_DATABASE の項目だけとなります。

phpmyadmin を開きます。

新規作成でデータベースを作成します。

今回は、test というデータベースを作成します。

db test

なので残った項目の

DB_DATABASE と言う項目は、

DB_DATABASE=test

となります。

最終形態

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

接続できるか確認する。

接続方法は、マイグレーションを実行してデータベースにテーブルが作成されれば OK です。

関連記事

⇨Laravel でデータベースを作成する方法(マイグレーション)

今回は、Laravel プロジェクトに元々何個かマイグレーションファイルが入っているので、特に作業は必要ありません。

コマンドを2回打ってうまくいけば成功です。

php artisan config:clear
php artisan migrate

このコマンドを打っ他結果

ap_laravel % php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (73.96ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (44.82ms)

こんな感じで成功していれば接続が完了しています。

エラーを出してみる

接続が失敗していれば、

php artisan migrate

   Illuminate\Database\QueryException

  SQLSTATE[HY000] [1049] Unknown database 'aaaa' (SQL: select * from information_schema.tables where table_schema = aaaa and table_name = migrations and table_type = 'BASE TABLE')

こんなエラーがでます。

よく読むと、データベースがないようなそんな感じのエラーなので、データベース名の名前が間違っていそうなので確認したら

DB_DATABASE=aaaa

となっていました。

まとめ

最初ハマりやすいポイントのデータベース接続の部分に特化した記事を書いてみました。

書いている途中に、近い記事を書いていたことを思い出したりしたんですが、そこはごめんなさいと思っています。

何かご質問ご感想あれば、TwitterDM などでご連絡お待ちしております。

Share していただけると泣いて喜びます。

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する