この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:12
ページ更新者:atom
更新日時:2026-05-17 06:42:28

タイトル: データベースの設定

Laravelにおけるデータベース設定について記載します。Laravelでは .envconfig/database.php の2層で接続情報を管理し、複数DB接続・トランザクション・ロック制御まで柔軟に扱えます。

※テーブルの作成、変更などに関してはマイグレーションを参照してください。

子ページから項目を選択してください。

本ページの子ページ一覧

項目内容
config/database.phpファイル接続定義の本体。デフォルト接続、複数接続の構造
.env環境ごとに値を切り替える設定ファイル
複数のデータベースに接続する方法同一アプリで複数DB(読み書き分離・別DB参照)
DBトランザクションDB::transaction() による一括コミット/ロールバック
DBの悲観ロックlockForUpdate() / sharedLock()

基本の接続設定(.env)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=myuser
DB_PASSWORD=secret

.env を変更したら必ず以下を実行してキャッシュをクリアします。

$ php artisan config:clear

対応DBエンジン

DB_CONNECTION値対応DB
mysqlMySQL / MariaDB
pgsqlPostgreSQL
sqliteSQLite
sqlsrvSQL Server

接続確認

# tinker で接続確認
$ php artisan tinker
>>> DB::connection()->getPdo();

# マイグレーションの状態確認
$ php artisan migrate:status

よくあるトラブル

  • SQLSTATE[HY000] [2002] Connection refused — DBサーバー未起動/ポート違い/ホスト名違い(Docker環境では localhost ではなくサービス名)
  • Access denied for user — ユーザー名・パスワード違い、または権限不足
  • SQLSTATE[42000]: Specified key was too long — utf8mb4のインデックスで767バイト超過。Schema::defaultStringLength(191); をAppServiceProviderに追加
  • config変更が反映されないconfig:cache 後は config:clear しないと .env変更が無効

注意点

  • 本番では .env をリポジトリにコミットしない.env.example のみ管理)
  • 本番では php artisan config:cache でキャッシュ化すると高速化(ただし .env 変更後は再キャッシュが必要)
  • クラウド環境ではSecretsManagerやSSMから値を注入することが多い

関連