Laravel迁移无法连接数据库,但应用其余功能正常求助
Laravel迁移报错SQLSTATE[HY000] [2002] No such file or directory(MAMP环境)
问题场景
本地Laravel 7.30.6应用在Mac MAMP环境下,Web功能可正常连接数据库,但执行php artisan migrate时出现如下错误:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = dbname and table_name = migrations and table_type = 'BASE TABLE')
已尝试将.env中DB_HOST改为127.0.0.1,并执行过缓存清除、Composer更新等操作,均无效。数据库中已存在migrations表。
解决方案
问题根源是MAMP的MySQL Socket文件路径与PHP命令行默认查找路径不一致:Web环境因MAMP预设了正确路径可正常连接,而Artisan命令行未识别到该路径。
- 添加Socket路径配置
在.env文件中新增DB_SOCKET项,指定MAMP的MySQL Socket默认路径(若你的MAMP安装路径不同需调整):
DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=dbname DB_USERNAME=root DB_PASSWORD=root DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
- 清除配置缓存
执行命令刷新配置:
php artisan config:clear
- 重新执行迁移
php artisan migrate
补充排查
若上述方法无效,可检查命令行PHP的配置文件(执行php --ini查看配置路径),确保以下参数指向MAMP的Socket路径:
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock mysqli.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock pdo_mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

