2017-06-20 97 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