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:
php artisan config:clear
php artisan cache:clear
Si prega di controllare lo screenshot qui sotto:
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