База данных конфликтов, когда несколько проектов Laravel на одной машине

Я использую xampp для Windows 10. У меня есть несколько проектов larvel 5.2 на этом компьютере. Когда я выполняю проект 1, он дает мне ошибку, что таблица или представление database_project_1.table_of_project_2 не существует, но таблица table_of_project_2 существует в database_project_2 table_of_project_2 . Эта проблема возникает редко.

Ниже представлен файл проекта 1. .env

 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 DB_PASSWORD=j@yshr33r@m 

Ниже представлен файл проекта 2.env.

 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 DB_PASSWORD=j@yshr33r@m 

Я пробовал команды ниже, но не повезло:

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

Пожалуйста, просмотрите снимок экрана ниже: Ошибка согласования базы данных

Пожалуйста, дайте мне знать, если что-то не хватает.

Вот код config/database.php для обоих проектов.

Проект 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', 'j@yshr33r@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, ], ], ]; 

Проект 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', 'j@yshr33r@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, ], ], ]; 

Взгляните на код и дайте мне знать все, что требуется.

Вы указали, что используете database_project_1 в config/database.php проекта 2:

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

Поэтому, если когда-либо env('DB_DATABASE') не вернет значение, будет использоваться значение по умолчанию для database_project_1 . Это может произойти в зависимости от кэширования, как описано в нескольких вопросах здесь, на SO: пример 1 , пример 2 , пример 3 .

Если это проблема кэширования, вы можете попытаться исправить это с помощью некоторой комбинации следующих (зависит от установки и версий):

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

Но, безусловно, самым простым решением было бы просто использовать правильное значение по умолчанию в вашем проекте 2 config/database.php :

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

Вы пытались добавить отдельные базы данных в свой файл homestead.yaml .

Так выглядит

 databases: - homestead - database_project_1 - database_project_2