【发布时间】:2016-11-28 10:46:19
【问题描述】:
我正在使用 laravel 5。我需要从远程 MySQL 数据库中获取一些数据。
我已经在 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]: 未找到基表或视图:1146 表 'dvs.ip_products' >不存在(SQL: select * from
ip_products)
错误告诉我 Laravel 试图从 dvs 数据库(这是主站点数据库)中获取表。所以它没有使用连接'remotemysql'。如果它无法连接到远程数据库,则会出现连接错误,但我认为它根本没有使用远程连接。
我可以做些什么来解决这个问题?
【问题讨论】:
-
查看您的应用根文件夹中的
.env文件 (: -
.env 文件中的内容将始终覆盖您的配置。
-
@Taacoo 因此,如果我从 .env 中删除凭据并将其放入 database.php 中,它应该可以工作吗?我不会破坏它吗? :P
-
@Pieter-Jan 它将被
env()函数的第二个参数覆盖 -
@Pieter-Jan 检查给出的答案。如果您清空环境变量。或者将配置数据添加到 env 文件中,它应该像一个魅力一样工作。
标签: php mysql database laravel-5 remote-access