首页 > 解决方案 > 在 laravel 5.7 中使用多个数据库时遇到问题?

问题描述

我在使用 Laravel 5.7 时遇到问题,它无法识别第二个数据库连接。数据库 2 有一个数据库 1 没有的“国家”表。但是laravel坚持连接数据库1。这是错误和实际代码,请帮助!提前致谢

错误

SQLSTATE [42S02]:未找到基表或视图:1146 表 'database_1.countries' 不存在(SQL:从国家/地区选择 *)

模型

class Country extends Model {

    use SoftDeletes;

    protected $connection = 'mysql_2';
    protected $table      = 'countries';
    protected $fillable = ['...'];

}

控制器/调试器

class CountriesController extends Controller {

    public function index(){

       //  neither works, this

       $countries = DB::connection("mysql_2")->select('select * from countries');

       // or this

       $countries = Country::all();

       dd($countries); --> both give ERROR
}

数据库.PHP

    'default' => env('DB_CONNECTION', 'mysql'),

    'connections' => [

        'mysql' => [
            'driver'        => 'mysql',
            'host'          => env('DB_HOST', '127.0.0.1'),
            'port'          => env('DB_PORT', '3306'),
            'database'      => env('DB_DATABASE', 'database_1'), //forge
            'username'      => env('DB_USERNAME', 'root'), // forge
            'password'      => env('DB_PASSWORD', ''),
             .......
        ],

        'mysql_2' => [
            'driver'        => 'mysql',
            'host'          => env('DB_HOST', '127.0.0.1'),
            'port'          => env('DB_PORT', '3306'),
            'database'      => env('DB_DATABASE', 'database_2'),
            'username'      => env('DB_USERNAME', 'root'),
            'password'      => env('DB_PASSWORD', ''),
            .......
       ],

.ENV 文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_1
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION=mysql_2
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_2
DB_USERNAME=root
DB_PASSWORD=

和缓存更新:

php工匠配置:缓存

  Configuration cache cleared!
  Configuration cached successfully!

标签: laraveleloquent

解决方案


在您的 database.php 文件中尝试更改

'mysql_2' => [
            'driver'        => 'mysql',
            'host'          => env('DB_HOST', '127.0.0.1'),
            'port'          => env('DB_PORT', '3306'),
            'database'      => env('DB_DATABASE2', 'database_2'), // THIS IS THE ONE THATS CHANGED
            'username'      => env('DB_USERNAME', 'root'),
            'password'      => env('DB_PASSWORD', ''),
            .......
       ],

.ENV 文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_1
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION=mysql_2
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE2=database_2 // We change 'DB_Database' to 'DB_Database2'
DB_USERNAME=root
DB_PASSWORD=

推荐阅读