【Laravel】マイグレーションでデータベース接続の確認【ローカル】

プログラミング

どうも、えんつかです。

ローカル環境でのLaravelの環境構築法を以前まとめました。

今回は、DB接続方法、特にMySQLへの接続方法を記載します。

それでは、いってみましょう!

【Laravel】マイグレーションでデータベース接続の確認【ローカル】

LaravelでDB内のテーブルを作成する際は、マイグレーションが便利です。

マイグレーションは、データベースのバージョン管理機能です。

データベースのテーブルを生成したり削除したりする機能を持っており、PHPスクリプトを使ってテーブルの作成などを用意しておけます。

一度ファイルを作成しておけば、環境が変わった場合にコマンド一発でデータベースのテーブルを作成できますし、途中でテーブル構造を変えたい場合に、古いテーブルを削除して最新のテーブルに更新することも容易にできます。

ここでは、マイグレーションを上手く行えるかで、ローカル環境でDB接続が上手く行っているか確認したいと思います。

マイグレーションを行う為には、いくつか設定が必要なので順を追って記載していきます。

  • MySQL内でDB作成
  • configファイルの修正
  • .envファイルの修正

MySQL内でDB作成

まずは、DBを作成しましょう。

赤枠内をクリックし、ページを開きます。

クリックすると、phpmyadminに飛びます。

日本語表示にしつつ、DBを作成していきましょう。

赤枠内からDB作成と日本語表示に変更できます。

データベース名を入力し、照合順序をutf8mb4_unicode_ciにしましょう。

ここでは、データベースを「todoapp」とします。

こちらの「todoapp」は後程、.envファイルを修正する際にも用います。

別のデータベース名にしたら、そのデータベース名を用いて下さい。

ひとまず、これにてOKです。

configファイルの修正

続いて、DB接続するための手続きとして、configファイルを修正していきましょう。

作成したプロジェクトファイル内の「config」フォルダを探して下さい。

configフォルダ内に「database.php」ファイルが準備されていますので、これを開きます。

このファイルは以下の記述がされています。(一部省略)

今回は、MySQLへの接続とするので、このままでOKです。

もし、SQLiteに接続する場合は、以下の記述を

次のように変更です。

この、DB_CONNETCTIONの名前を変更することで使うデータベースを切り替えられます。

.envファイルの修正

これで、データベース設定は完了したのですが、Laravelの環境変数を設定する必要があります。

その為に続いて、.envファイルを修正していきましょう。

これは、基本的な動作環境に関する変数です。

.envファイルは、隠しファイル設定になっているので、隠しファイルが表示されるように設定しましょう。

>>隠しファイルの表示設定

.envファイルを開いたら、「DB_CONNECTION」と「DB_PORT」と「DB_DATABASE」という3つの項目を探して、以下のように修正して下さい。

「DB_CONNECTION」は、用いるsqlを記述します。

「DB_PORT」は、使用するポートを記述します。

こちらは、phpmyadminに接続した際に表示されている、ポートを用いて下さい。以下写真の赤枠内です。

「DB_DATABASE」には、使用するデータベース名を記載して下さい。

これにて、.envファイルの修正は完了です。

マイグレーションの実行

ここでは、マイグレーションファイルの作成は割愛し、デフォルトで存在しているファイルをtodoappにマイグレーションしていきます。

ターミナルを起動します。

以下のコマンドを入力して下さい。

php artisan migrate

Migration table created succesfullyと表示されれば、マイグレーション成功です。

phpmyadmin内のtodoappデータベースを確認して下さい。

テーブルがデータベース内に確認されれば、OKです。

php artisan migrateが上手くいかない場合

私は、php artisan migrateが上手くいかず、だいぶ凹みました。

同じ様に誰かが苦労しないようにする為に、私が遭遇したエラー対処を記載します。(というか、上記の様に進めるとエラーを回避して上手く行くはずです。)

主なエラー要因は以下の二つでした。

  • キャッシュが残っていて変更が反映されていない
  • .envの設定が正しくない

以下のエラーが出てきました。

エラー①

 1   PDOException::(“SQLSTATE[HY000] [2002] Connection refused”)     

/Applications/MAMP/htdocs/laravelapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct(“mysql:host=127.0.0.1;port=3306;dbname=todoapp”, “root”, “”, [])

/Applications/MAMP/htdocs/laravelapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

エラー②

  1   PDOException::(“SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO)”)

/Applications/MAMP/htdocs/laravelapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct(“mysql:host=127.0.0.1;port=8889;dbname=todoapp”, “root”, “”, [])

Applications/MAMP/htdocs/laravelapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

どうやら、.envファイルが正しくなく、DB接続が上手くいっていない様でした。特に、DB_PORTは要注意です。

そして、正しく修正したのですが、修正内容が反映されておらず、上手くいっていない様でした。

色々調べているとキャッシュが残る様で、ターミナルでキャッシュをクリアする必要があるとのことでした。

以下のコマンドでキャッシュをクリアすることができます。

php artisan cache:clear

Application cache cleared!と表示されます。

続いて、次のコマンドです。

php artisan config:cache

Configuration cache cleared!

Configuration cached successfully!

と表示されます。その後、再度php artisan migrateを行ってみて下さい。

以上です。

参考になれば幸いです。