Laravelでデータベースへの接続を確認する
Laravelでmigrateする際に問題にぶつかったのでメモしておきます。
php artisan migrate
このコマンドでデータベースにうまくテーブルが作られていませんでした。
しかしどこにもエラーメッセージは見当たりません。
もう一度migrateしても
Nothing to migrate.
と表示されました。
疑うべきは.envファイルの設定が間違っていることか?
しかしプロジェクト内の.envは目的のexampleデータベースに設定されており正しかったです。
接続がもしかして切れているのかと思い、以下のコードを書いて確認しました。
とりあえずどこでもよかったので、route/web.phpに書きました。
Route::get('/', function () {
try {
DB::connection()->getPdo();
if(DB::connection()->getDatabaseName())
{
echo "conncted sucessfully to database ".DB::connection()->getDatabaseName();
}
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration. error:" . $e );
}
// return view('index');
});
以下のコマンドを入力後、localhost:8000で確認すると、
php artisan serve
なんと別のデータベースへ接続されていました( ゚Д゚)
キャッシュが問題かと思い以下のコマンドを入力。
php artisan config:clear
php artisan config:cache
結果は変わらず。
しかし、このキャッシュの場所bootstrap/cache/config.phpを確認すると、確かにexampleデータベースではなく、別のデータベースに接続する設定になっていました。
このconfig.phpを直接書き換えてmigrateすると正しくmigrate出来ました。
キャッシュの生成で間違いが起きていることが分かったので、もしかしたら別の.envファイルを読み込んでいるのか?と思いdocker-compose.ymlを確認すると…
env_file:
- .env
ここで別の.envファイルを読み込んでいました( ゚Д゚)
このファイルは不要だったので削除しました。
これでもう一度ブラウザで確認すると正しいデータベースに接続されており、migrateも期待通り出来ました。
docker-compose down
docker-compose up -d
docker-compose exec php php example_app/artisan config:clear
docker-compose exec php php example_app/artisan config:cache
docker-compose exec php php example_app/artisan migrate
docker-compose exec php php example_app/artisan serve --host 0.0.0.0
VagrantとDockerを使用してLaravelを使っていたので起きた問題でした。(´∀`)
Share this post
Twitter
Google+
Facebook
Email