2016-11-28 121 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

谢谢你现在工作:) –