Laravel执行php artisan migrate:reset报错,数据库连接问题求助
解决Homestead环境下Laravel
migrate:reset 数据库连接拒绝的问题 嘿,我碰到过一模一样的问题!核心原因其实是你在本地终端执行artisan命令时,Laravel用的是本地.env配置,但Homestead的MySQL跑在虚拟机里,得搞清楚命令执行的环境或者修正配置才行。下面给你几个靠谱的解决办法:
1. 最省心的方式:进Homestead虚拟机里执行命令
Homestead本来就是让你在虚拟机环境里跑Laravel CLI操作的,毕竟数据库、PHP这些都是虚拟机里配置好的,操作步骤超简单:
- 打开终端,进到你的Homestead目录(一般是
~/Homestead) - 敲
vagrant ssh就能进到虚拟机里 - 切换到你的项目目录(默认是
/home/vagrant/code/你的项目名) - 再执行
php artisan migrate:reset,这时候肯定能连上虚拟机里的MySQL,因为环境完全匹配
2. 非要在本地执行?那得修正.env配置
如果你想在本地终端直接跑命令,得把.env里的数据库配置改对,还要注意端口映射:
- 打开项目根目录的
.env文件,把数据库部分改成这样:DB_CONNECTION=mysql DB_HOST=192.168.10.10 # 就是你PHPStorm用的那个虚拟机IP,没错 DB_PORT=33060 # 划重点!Homestead默认把虚拟机的3306映射到本地的33060,不是默认的3306 DB_DATABASE=你的数据库名 DB_USERNAME=homestead # Homestead默认的数据库用户名,别乱改 DB_PASSWORD=secret # Homestead默认密码,也是固定的 - 改完保存后,记得执行
php artisan config:clear清一下配置缓存,不然Laravel可能还读旧配置 - 再试
php artisan migrate:reset -v,应该就能正常连接了
3. 排查一些小坑
- 先确认Homestead虚拟机是开着的:终端敲
vagrant status,显示running才对,没开的话就vagrant up启动 - 检查本地防火墙有没有拦192.168.10.10的33060端口,有的话临时关了试试
- 进虚拟机里看看MySQL服务跑没跑:敲
sudo systemctl status mysql,没跑的话就sudo systemctl start mysql
为啥PHPStorm能连但本地artisan不行?因为你PHPStorm已经配置对了IP和端口(应该用了33060),但本地
.env里可能还是默认的DB_HOST=localhost或者DB_PORT=3306,自然连不上虚拟机里的MySQL啦!
内容的提问来源于stack exchange,提问作者user7995285
相关产品推荐
相关产品推荐

