如何在laravel中更改数据库名称?更改配置> database.php不起作用

时间:2014-09-07 18:47:40

标签: php mysql laravel

我创建了一个数据库" 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会查找该主机?

2 个答案:

答案 0 :(得分:1)

您的主机应该是localhost。术语localhost表示运行laravel的计算机。 mysite.local可能是一台驻留在这台计算机上的虚拟站点。它没有自己的Mysql安装。所有虚拟站点将共享相同的mysql。他们只会使用不同的数据库。

无论如何我的设置如何工作。

答案 1 :(得分:0)

  • 问题出在您的config / database.php中,默认连接,当前默认连接设置是从.env文件获取

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

所以改成它:

'default' => 'mysql',