さあ、Laravelをやっていこう!と意気揚々と始めようとしたときにまさかのDBが接続できておらず、エラー…。やる気が一気にサーっと消えていきました。
XAMPPをインストールした、Composerをインストールした、Laravelをインストールした!さあ、開発だ!っていうモチベーションが最高だったのに忘れていたのです。あれを。DBの設定を。
もし、また新しいプロジェクトでLaravelをインストールすることになったときのために同じことを繰り返さないために備忘録として残しておこうじゃないか!!
「.env」ファイルを編集する
Laravelをインストールしたらそのディレクトリの中に「.env」というファイルがあると思います。
特殊なファイル名なので触るのがちょっと怖いですね…。
この「.env」というファイルにDB接続するための情報を環境変数として記載していきます。
「.env」にはDB以外にもいろいろ設定できるので、以下の画像を参考にDB関連の設定をするところを探してください。
※ちなみにローカルのDBへ接続する場合はおそらくデータベース名とパスワード(設定していれば)を変更するくらいで大丈夫だと思います。
設定する項目
「DB_CONNECTION」
使用するDBの種類を指定します。mysql、postgresql、sqlite、etc…。ここはどのDBを使うかですね。
「DB_HOST」
接続するDBのホストアドレスを指定します。初期状態では「127.0.0.1」となっていますね。必要に応じて変更します。
「DB_PORT」
接続先のポート番号を指定します。初期状態では「3306」となっていますね。ここも必要であれば変更します。
「DB_DATABASE」
接続するDB名を指定します。初期状態では「laravel」となっていますが、接続するDBの名前に応じてここを変更します。
「DB_USERNAME」
接続するユーザー名を指定します。初期状態では「root」となっています。
これはさすがにセキュリティの面から考えるとよろしくないですね。ローカルで開発するぶんには百歩譲っていいかもしれませんが、本番環境ではなかなかrootユーザーでアクセスすることはないと思いますので、しっかりとアクセスするユーザー名を指定しましょう。
「DB_PASSWORD」
接続するDBのパスワードを指定します。初期状態では空欄となっています。
ここに使用するDBのパスワードを指定します。パスワードを記載することからも「.env」というファイルは重要だということがわかります。管理をしっかりしなくてはなりません。
設定例:
これはあくまでもサンプルなので、実際にはもうちょっと推測されにくいパスワードにしましょう笑。
「database.php」を編集
Laravelをインストールしたディレクトリの中にある「config」の中にある「database.php」を編集していきます。
なぜ、「database.php」を編集する必要があるのかというと、デフォルトのままだとマルチバイト文字を使ったときにエラーが発生する可能性があるのです。
マルチバイト文字、つまり日本語です。Laravelでの開発で日本語を使うとエラーになってしまうかもしれないのです。。。
これはLaravelでのマルチバイト文字の扱いとMySQLでのマルチバイト文字の扱いが違うので予期せぬエラーが…ってことです。
ということで、以下の項目を変更していきましょう。
・’charset’ => ‘utf8mb4’ となっているところを ‘charset’ => ‘utf8’ とします。
・’collation’ => ‘utf8mb4_unicode_ci’ となっているところを ‘collation’ => ‘utf8_unicode_ci’
とします。
変更前:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
変更後:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
以下のようになっていればOKです。
設定を変更したら、その内容を反映させるための以下のコマンドを実行してキャッシュを再生成しましょう。
cd "プロジェクトフォルダの場所"
php artisan config:cache
DB接続テスト
それではいよいよDBに接続できるか確認してみましょう!
まずは、接続先のDBを起動してください。僕の場合はXAMPPからMySQLを起動します。
例)ローカルでXAMPPを使っている場合
以下のコマンドを実行します。
php artisan migrate
設定がうまくできていれば、以下の画像のようなメッセージが表示されて、接続先のDBにテーブルが作成されます。
※もし、ここでエラーが出てしまったら、もう一度「 .env 」と「 database.php 」の変更内容を確認しましょう。
それでは、DBにアクセスしてテーブルが作成されているか確認しましょう!ドキドキです。。。
無事、テーブルが作成されてました!!DBに接続できているようですね。
めでたしめでたし。