Conflict database quando più progetti Laravel su una singola macchina

Sto usando xampp su Windows 10. Ho più progetti di laravel 5.2 su questa macchina. Quando eseguo il Progetto 1 mi dà l'errore che la tabella o la vista database_project_1.table_of_project_2 non esiste, ma la tabella table_of_project_2 è già presente in database_project_2 . Questo problema viene raramente.

Di seguito è riportto il file .env di Project 1

 APP_ENV=local APP_DEBUG=true APP_KEY=base64:ratSluNv930gb3wp1UOabW6Ze3jEJn3ixtTX/wgqYZc= APP_URL=http://project-1.dev/ DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database_project_1 DB_USERNAME=root [email protected]@m 

Di seguito è riportto il file .env di Project 2

 APP_ENV=local APP_DEBUG=true APP_KEY=base64:XRgQHfYiKPmHtHZ5UbX38KDlBnl/nyBSt+8qnkOISTg= APP_URL=http://project-2.dev/ DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database_project_2 DB_USERNAME=root [email protected]@m 

Ho provato sotto i comandi ma senza fortuna:

  1. php artisan config:clear
  2. php artisan cache:clear

Si prega di controllare lo screenshot qui sotto: Errore di database confict

Per favore fathemes sapere se manca qualcosa.

Ecco il codice config/database.php per entrambi i progetti.

Progetto 1 config/database.php

 <?php return [ 'fetch' => PDO::FETCH_CLASS, 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'database_project_1'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', '[email protected]@m'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ], 'migrations' => 'migrations', 'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', 'localhost'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ]; 

Progetto 2 config/database.php

 <?php return [ 'fetch' => PDO::FETCH_CLASS, 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'database_project_2'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', '[email protected]@m'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ], 'migrations' => 'migrations', 'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', 'localhost'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ]; 

Dai un'occhiata al codice e fammi sapere tutto ciò che è necessario.

Hai specificato di utilizzare database_project_1 in config/database.php Project 2:

 'database' => env('DB_DATABASE', 'database_project_1'), 

Quindi se mai env('DB_DATABASE') non restituisce un valore, verrà utilizzato il valore predefinito di database_project_1 . Ciò può accadere in base al caching, come descritto in alcune domande qui su SO: esempio 1 , esempio 2 , esempio 3 .

Se si tratta di un problema di memorizzazione nella cache, puoi provare a risolverlo con una combinazione delle seguenti (varia tra installazioni e versioni):

 php artisan config:clear php artisan cache:clear composer dump-autoload // restart your web server 

Ma sicuramente la soluzione più semplice sarebbe quella di usare semplicemente il valore predefinito corretto nel tuo progetto 2 config/database.php :

 'database' => env('DB_DATABASE', 'database_project_2'), 

Hai provato ad aggiungere i database separati all'interno del tuo file homestead.yaml .

Quindi sembra questo

 databases: - homestead - database_project_1 - database_project_2