【问题标题】:Laravel homestead: Unknown database 'projectadmin_db'Laravel 宅基地:未知数据库 'projectadmin_db'
【发布时间】:2026-01-29 16:30:01
【问题描述】:

我是 laravel 的新手。我使用宅基地进行开发。我有两个数据库连接

数据库.php

'cust_main_db'   =>  [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'project_db',
        'username'  => 'homestead',
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
    'admin_main_db'   =>  [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'projectadmin_db',
        'username'  => 'homestead',
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

Homestead.yaml

databases:
    - homestead

在我的本地 mysql 中同时拥有数据库 project_dbprojectadmin_db

当我运行项目http://homestead.app:8000/ 时,它显示SQLSTATE[HY000] [1049] Unknown database 'projectadmin_db'

我在这里错过了什么?如有错误请指正。

【问题讨论】:

    标签: laravel laravel-5 laravel-5.1 homestead


    【解决方案1】:

    当您在 Homestead 中运行您的应用程序时,它会在 Homestead 中查找数据库,而不是您的实际 localhost。您可以通过127.0.0.1:33060 连接到 Homestead 的 MySQL。

    【讨论】:

    • Homestead 数据库 33060 映射到默认 3306 对吗?
    • 是的,你的应用程序配置应该是默认的 3306。我的意思是,如果你使用 Sequel Pro、Navicat 或类似的应用程序,你应该将端口指定为 33060 来连接 Homestead MySQL 而不是本地 MySQL这是在 3306。
    • 在我的情况下,这会导致“连接失败!”
    【解决方案2】:

    在使用projectadmin_db数据库的模型上,需要添加

    protected $connection = 'admin_main_db';
    

    【讨论】:

      【解决方案3】:

      确保在创建数据库时使用默认的 Homestead 端口 33060,

      即:您在来宾虚拟机上而不是在主机上创建数据库。

      【讨论】: