Laravel Homestead双数据库创建失败及连接问题求助
Laravel Homestead 多数据库创建失败排查与解决
核心问题原因
- Homestead.yaml 数据库配置格式错误(YAML对缩进、格式高度敏感)
- 配置更新后未正确触发虚拟机配置刷新
- Laravel 数据库连接配置存在拼写或参数错误
分步解决办法
1. 修正 Homestead.yaml 配置格式
确保 databases 字段为数组格式,且缩进必须用空格(禁止使用制表符):
databases: - homestead - homestead2
注意每个数据库项前是「2个空格 + 短横线 + 空格」,格式错误会直接导致Homestead脚本忽略第二个数据库的创建请求。
2. 强制刷新虚拟机配置
单纯执行 vagrant up --provision 可能因缓存未生效,改用重启加配置刷新的组合命令:
vagrant reload --provision
该命令会先重启虚拟机,再重新执行Homestead的初始化脚本,确保数据库创建逻辑被完整触发。
3. 手动创建数据库(兜底方案)
若上述步骤仍无效,直接进入虚拟机手动创建目标数据库:
- 登录虚拟机:
vagrant ssh - 连接MySQL(默认账号:homestead,密码:secret):
mysql -u homestead -psecret - 创建数据库:
CREATE DATABASE homestead2; - 退出MySQL:
exit
4. 验证Laravel双数据库配置
检查 config/database.php 中的第二个连接配置:
'mysql2' => [ 'driver' => 'mysql', 'host' => env('DB_HOST_2', '127.0.0.1'), 'port' => env('DB_PORT_2', '3306'), 'database' => env('DB_DATABASE_2', 'homestead2'), 'username' => env('DB_USERNAME_2', 'homestead'), 'password' => env('DB_PASSWORD_2', 'secret'), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, ],
检查 .env 对应配置项:
DB_HOST_2=127.0.0.1 DB_PORT_2=3306 DB_DATABASE_2=homestead2 DB_USERNAME_2=homestead DB_PASSWORD_2=secret
注意:Laravel在Homestead虚拟机内运行时,数据库端口用默认3306即可,无需使用本地转发的33060端口。
5. 测试连接与迁移
执行指定连接的迁移命令验证配置有效性:
php artisan migrate --database=mysql2
PhpStorm连接时,需使用本地转发端口(默认33060),账号密码与虚拟机内MySQL一致,数据库名填写homestead2。
内容的提问来源于stack exchange,提问作者Lilian Carion
相关产品推荐
相关产品推荐

