【发布时间】:2014-09-07 18:47:39
【问题描述】:
我创建了一个数据库“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 发送一个异常,表明它试图访问:
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 会尝试使用“homestead”数据库而不是“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 会寻找该主机?
【问题讨论】:
-
检查 config/databse.php 中的默认键,是否有 mysql 或 homesead。是的,您可能会从 env 文件中获取 db 配置,因此将默认值“'default' => env('DB_CONNECTION','mysql'),”更改为“'default' => 'mysql',”