我创建了一个数据库" mydatabase"我将config> database.php更改为:
'mysql' => array(
'driver' => 'mysql',
'host' => 'mysite.local',
'database' => 'mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
现在在route.php里面我有:
Route::get('/', function()
{
$data=DB::table('user')->get();
return $data;
});
laravel发送一个Exception,显示它试图访问:
homestead.user
而不是
mydatabase.user
现在如果我将route.php更改为:
Route::get('/', function()
{
$data=DB::table('mydatabase.user')->get();
return $data;
});
它会起作用!
同样根据this question我将config> local> database.php更改为:
'mysql' => array(
'driver' => 'mysql',
'host' => 'mysite.local',
'database' => 'mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
但这一次,甚至
$data=DB::table('mydatabase.user')->get();
也不起作用!这次又引发了另一个例外:
PDOException (2002)
SQLSTATE[HY000] [2002] Connection refused
我的问题是为什么laravel试图使用"宅基地"数据库而不是" mydatabase"?我应该改变其他什么吗?
修改 我将config / local / database.php更改为
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
一切正常! (我将mysite.local改为localhost) 我没有在/ etc / hosts中定义本地主机,那么为什么laravel会查找该主机?
答案 0 :(得分:1)
您的主机应该是localhost。术语localhost表示运行laravel的计算机。 mysite.local可能是一台驻留在这台计算机上的虚拟站点。它没有自己的Mysql安装。所有虚拟站点将共享相同的mysql。他们只会使用不同的数据库。
无论如何我的设置如何工作。
答案 1 :(得分:0)
问题出在您的config / database.php中,默认连接,当前默认连接设置是从.env文件获取
'default'=> env('DB_CONNECTION','mysql'),
所以改成它:
'default' => 'mysql',