You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为每个Laravel/Homestead项目配置独立数据库遇阻求助

解决Homestead多站点数据库连接混淆的问题

我之前折腾Homestead多站点的时候也碰到过一模一样的坑,给你几个亲测有效的排查和解决步骤:

  • 先确认虚拟机内的环境变量与配置缓存
    你是通过SSH进入虚拟机执行迁移的,这里很容易踩的坑是:虚拟机里的环境变量或者Laravel的配置缓存,会覆盖你本地.env的设置。
    先在虚拟机的项目根目录下执行 echo $DB_DATABASE,看看输出是不是boomer——如果不是,说明虚拟机里的环境变量没正确加载,得检查虚拟机内的.env文件是不是和本地同步了(Homestead默认会同步,但有时候手动修改后需要重新provision)。
    另外,Laravel的配置缓存会导致新的配置不生效,先执行 php artisan config:clear 清除缓存,再跑迁移试试。

  • 检查Homestead.yaml的站点-数据库映射
    打开你的homestead.yaml,一定要确保sites部分的每个站点都正确绑定了对应的数据库,比如:

    sites:
        - map: your-boomer-site.test
          to: /home/vagrant/code/boomer/public
          database: boomer # 这个字段一定要加上,让Homestead把站点和数据库关联起来
    databases:
        - homestead
        - boomer
    

    改完之后必须执行 vagrant reload --provision,让虚拟机重新加载配置,这一步很容易忘!

  • 纠正虚拟机内的数据库端口配置
    你的本地.env里写的端口是33060,这是宿主机用来连接虚拟机数据库的端口,但虚拟机内部连接数据库应该用默认的3306(因为端口映射是宿主机33060 → 虚拟机3306)。所以虚拟机里的.env文件,DB_PORT应该设为3306,而不是33060。
    你可以直接在虚拟机里登录数据库验证:执行 mysql -u homestead -psecret,然后输入 USE boomer;,再跑 SHOW TABLES; 看看是不是空的——如果是空的,说明数据库本身没问题,是迁移命令的连接配置错了。

  • 迁移时明确指定数据库连接
    如果上面的步骤都排查过了,还是没解决,试试在迁移命令里强制指定连接:

    php artisan migrate --database=boomer
    

    前提是你在config/database.php里已经正确配置了boomer的连接信息,比如:

    'connections' => [
        // ... 其他连接
        'boomer' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'boomer'),
            'username' => env('DB_USERNAME', 'homestead'),
            'password' => env('DB_PASSWORD', 'secret'),
        ],
    ],
    

内容的提问来源于stack exchange,提问作者Mohamed Kira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:18:56