php - 远程 MySQL 数据库连接 Laravel 5 不工作

标签 php mysql database laravel-5 remote-access

我正在使用 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,
    ],
],

连接信息是正确的,我已经测试过了,我能够连接到远程数据库。

为了测试它,我只是获取了数据库连接和 Controller 中的数据,将其发送到 View 以检查是否一切正常。这是我的 Controller :

...
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>
...

当我尝试加载我的 View 时,我收到此错误消息:

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

错误告诉我 Laravel 试图从 dvs 数据库(这是主站点数据库)获取表格。所以它没有使用连接“remotemysql”。如果它无法连接到远程数据库,则会出现连接错误,但我认为它根本没有使用远程连接。

我该怎么做才能解决这个问题?

最佳答案

从错误中可以看出:

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 个参数:$key, $default

所以它首先查找 .env 文件以在您的情况下找到 $key DB_HOST, DB_DATABASE... 如果它没有定义将使用您定义为第二个参数的 $default

你可以阅读它here

关于php - 远程 MySQL 数据库连接 Laravel 5 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842390/

相关文章:

php - 使用 jQuery 对话框显示 mysql_error 消息

mysql - 从多家公司的表中获取最新发布的新闻

php - Wordpress w3 总缓存和负载平衡问题

php - PHP PCRE 中的\x 是什么意思?

php - 更改表中行的颜色

php - mysql 选择带有转义引号的记录

python - Django 上的属性错误

java - 在objectdb中查询

database - 如何使用 DBMS_OUTPUT.PUT_LINE 打印出当前时间?

sql - 在 mysql 中,我如何找到关于所有字段重复的行?