Laravel 5.6 数据表迁移报错:MAMP 4/Mac环境连接异常排查
解决MAMP 4 + Laravel 5.6 数据表迁移时的SQLSTATE[HY000] [2002]错误
这个问题我之前帮好几个开发者排查过,本质上是Laravel默认的MySQL连接配置和MAMP的实际参数不匹配——虽然你用Sequel Pro能正常访问数据库,但Sequel Pro是手动指定了MAMP的连接参数,而Laravel还在走系统默认的路径。下面给你一步步解决:
第一步:确认MAMP的MySQL核心参数
先打开MAMP,点击顶部菜单栏的MAMP > Preferences,切换到MySQL标签页,记好这两个关键信息:
- 端口号:默认是
8889(别和Mac系统默认的3306混淆) - Socket路径:默认是
/Applications/MAMP/tmp/mysql/mysql.sock
第二步:调整Laravel的.env配置文件
找到你的Laravel项目根目录下的.env文件(如果Finder里看不到,按Cmd+Shift+.显示隐藏文件),两种调整方案二选一即可:
方案一:用TCP/IP连接(推荐,避开socket路径问题)
把原来的DB_HOST=localhost改成127.0.0.1,同时指定MAMP的MySQL端口:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=8889 DB_DATABASE=laravel_database DB_USERNAME=root DB_PASSWORD=root
方案二:指定MAMP的Socket路径
如果你想继续用socket连接,就在.env里新增DB_SOCKET参数,指向MAMP的socket路径:
DB_CONNECTION=mysql DB_HOST=localhost DB_DATABASE=laravel_database DB_USERNAME=root DB_PASSWORD=root DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
第三步:清除Laravel配置缓存
修改完.env后,一定要执行这条命令清除配置缓存,不然Laravel可能还在使用旧的配置:
php artisan config:clear
第四步:重新运行迁移
现在再执行迁移命令试试:
php artisan migrate
如果还是不行,先确认MAMP的MySQL服务是启动状态(MAMP界面里MySQL的指示灯是绿色的),另外检查.env里的数据库名、用户名和密码是否和你在Sequel Pro里用的完全一致。
内容的提问来源于stack exchange,提问作者CodingFlow
相关产品推荐
相关产品推荐

