【问题标题】:how to change database name in laravel? changing config>database.php doesn't worklaravel如何修改数据库名称?更改 config>database.php 不起作用
【发布时间】: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',”

标签: php mysql laravel


【解决方案1】:

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

反正我的设置就是这样工作的。

【讨论】:

    【解决方案2】:
    • 问题在于您的 config/database.php 使用默认连接,当前默认连接设置是从 .env 文件获取为

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

    所以改成:

    'default' => 'mysql',
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多