Context :
-
I have DB1 and DB2 and a laravel application using DB1 so far
-
I want now that laravel (8) application to use DB2 instead (both DB1 & 2 are mysql)
-
I edited the .env file to change the DB_HOST and cleared the config cache
Expected : Laravel using DB2
Problem : Laravel still connects to DB1
Things I’ve tried :
-
php artisan config:cache
/ clear -
php artisan optimize:clear
-
restarted DB1/DB2
-
restarted nginx
-
restarted php-fpm
-
redeployed the whole app (with composer install etc.)
-
tried adding a new connection in
config/database.php
instead of editing the existing one : same issue -
hardcoding the values in
config/database.php
instead of referencing the env file : same issue -
php artisan db sql
–> connects to the RIGHT DB (this is what’s driving me insane) -
… but php artisan tinker doesn’t seem to. I created a dummy table in DB2 only (so not present in DB1) and getting that table with
DB::connection('mysql')->table('dummy')->get();
shows an error via tinker -
obviously, stopping DB1 makes the application go offline ("No such file or directory" blabla ie. no database PDO)
I don’t even know what to try anymore. Every post somewhat related online are solved after a simple artisan config:clear/cache
….
Any thoughts appreciated ?
3
Answers
The answer was
DB_SOCKET=/tmp/mysql.sock
in my .env file that locked the connection to the previous (local) DB. Removing that from my env file solved the issueto change the database you need to write the database name on DB_DATABASE instead on DB_HOST…
In case the other answers do not solve this for you, you can try to manually delete the cache in
./bootstrap/cache/config.php
and./bootstrap/cache/_config.php
. For some reason in my casephp artisan config:cache
didn’t seem to be clearing the cache. This was on an older version of Laravel (5.2.45 to be exact).