【发布时间】:2020-02-04 01:48:57
【问题描述】:
我在使用 Laravel 5.7 时遇到问题,它无法识别第二个数据库连接。数据库 2 有一个数据库 1 没有的“国家”表。但是laravel坚持连接数据库1。这是错误和实际代码,请帮助!提前致谢
错误
SQLSTATE[42S02]:未找到基表或视图:1146 表 'database_1.countries' 不存在(SQL: select * from countries)
型号
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!
【问题讨论】:
-
对于同一个变量名,
.env文件中不能有多个值。您需要DB_CONNECTION_2、DB_HOST_2等以具有不同的值。 -
感谢 Matti,您的 cmets 与 Steven 一样完美,非常感谢!