2016-11-28 118 views
1

我正在使用laravel 5.我需要從遠程MySQL數據庫獲取一些數據。遠程MySQL數據庫連接Laravel 5不能正常工作

我已經在config/database.php中建立了我的數據庫連接。 這是它的外觀:

'connections' => [ 

    'mysql' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 

    'remotemysql' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', '************'), 
     'database' => env('DB_DATABASE', 'osys'), 
     'username' => env('DB_USERNAME', 'Syn'), 
     'password' => env('DB_PASSWORD', '****************'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 
], 

連接信息是正確的,我已經測試了它,我能夠連接到遠程數據庫。

爲了測試它,我只是提取了數據庫連接和我的控制器中的數據,將它發送到視圖以檢查一切是否正常工作。這是我的控制器:

... 
use DB; 
... 

public function item() 
{ 

    $items = DB::connection('remotemysql') 
    ->table('ip_products') 
    ->get(); 
    return view('admin.item', compact('items')); 
} 

,這是我的看法:

... 
<tbody>  
@foreach ($items as $item) 
    <tr> 
     <td>{{$item->id}}</td> 
    </tr> 
@endforeach 
</tbody> 
... 

當我嘗試加載我的看法,我收到此錯誤信息:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dvs.ip_products' >doesn't exist (SQL: select * from ip_products)

錯誤表明我Laravel試圖從表格中獲得dvs數據庫(這是主要的網站數據庫)。所以它沒有使用連接'remotemysql'。如果它不能連接到遠程數據庫,它會得到一個連接錯誤,但我認爲它根本不使用遠程連接。

我能做些什麼來解決這個問題?

+0

看看'在您的應用程序(的根文件夾.env'文件: – num8er

+0

的東西,在你的.ENV文件將始終覆蓋你的配置 – Taacoo

+0

@Taacoo所以,如果我刪除。憑證超出我的.env,只是把它放在database.php它應該工作? 我不會破壞它嗎?:P –

回答

1

,你可以從錯誤看到:

Table 'dvs.ip_products' >doesn't exist

其中dvs是數據庫名。

所以要根據您的配置文件:

'remotemysql' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_HOST', '************'), 
    'database' => env('DB_DATABASE', 'osys'), 
    'username' => env('DB_USERNAME', 'Syn'), 
    'password' => env('DB_PASSWORD', '****************'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

env()方法有2個ARGS:$key, $default

所以它看起來先.env文件找到你的情況下DB_HOST, DB_DATABASE...$key,如果它沒有定義將使用您定義爲第二個參數的$default

你可以閱讀一下here

+1

謝謝你現在工作:) –