Я использую 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
Я пробовал команды ниже, но не повезло:
php artisan config:clear
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