2017-06-20 99 views
3

我使用在Windows 10 XAMPP在我这台机器上的多个laravel 5.2项目。当我执行Project 1时,它给我提供了database_project_1.table_of_project_2表或视图不存在的错误,但database_project_2中存在表table_of_project_2。这个问题很少。冲突数据库时多Laravel项目单机或laravel不读.ENV文件

下面是项目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 
[email protected]@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 
[email protected]@m 

我曾尝试下面的命令,但没有运气:

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

请检查下面的截图: Database Confict Error

请让我知道,如果什么东西丢失。

下面是这两个项目的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', '[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, 
     ], 
    ], 
]; 

项目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, 
     ], 
    ], 
]; 

看看代码,让我知道什么要求。

是不是问题,阅读.env文件或冲突的.env文件的另一个项目?

+0

'config/database.php'看起来像什么? –

+0

@不要恐慌:我已经为这两个项目添加了'config/database.php'文件 –

+0

您是否还有其他Laravel项目?只有这两个项目存在问题?双向问题还是一个项目按预期工作? – kerrin

回答

3

已指定使用database_project_1在项目2的config/database.php

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

所以,如果有的话env('DB_DATABASE')不返回值的database_project_1默认会用过的。这可以根据缓存的发生,因为在所以这里有几个问题描述:example 1example 2example 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'), 
+0

你知道为什么.env文件不会优先读取config/database.php文件吗? – kerrin

+1

@kerrin好问题 - 我添加了一些信息。 –

+0

@ Don'tPanic:抱歉'env('DB_DATABASE','database_project_2')'输入错误。它只是db的一个示例名称。但是可能会发生缓存或读取'.env'文件 –

-2

您是否尝试过加入您的homestead.yaml文件内的单独的数据库。

所以它看起来像这样

databases: 
- homestead 
- database_project_1 
- database_project_2 
+2

“我在Windows 10上使用xampp”时遇到的问题“他们没有使用宅基地。 – jfadich

+0

谢谢你的回答,但我在Windows 10上使用Xampp而不是家园 –

+0

哦,是的,尝试安装phpMyAdmin并设置新的数据库。 – SCRATK