Symfony中Doctrine无法连接MAMP本地MySQL数据库求助
我前段时间做学校Symfony项目的时候,跟你碰到了一模一样的坑!跟着官网教程一步步来,结果Doctrine死活连不上MAMP跑的本地MySQL数据库,执行php bin/console doctrine:database:create这类数据库命令全失败,报错全是:
In AbstractMySQLDriver.php line 93:
An exception occurred in the driver: SQLSTATE[HY000] [2002] No such file or directory
In PDOConnection.php line 31:
SQLSTATE[HY000] [2002] No such file or directory
In PDOConnection.php line 27:
SQLSTATE[HY000] [2002] No such file or directory
明明PHPMyAdmin能正常连数据库,我改了.env里的DATABASE_URL,还建了sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock的符号链接,还是没用,折腾了好久才找到解决办法,分享给你:
问题根源
MAMP的MySQL默认端口是8889(你.env里写的8888是MAMP的Apache端口,搞混了),而且Doctrine需要明确指定unix socket的路径才能正确连接MAMP的MySQL实例。
解决步骤
修正.env中的DATABASE_URL
把原来的配置替换成下面的内容:DATABASE_URL=mysql://root:root@127.0.0.1:8889/db?unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock这里要注意三个关键点:
- 端口从8888改成8889
- 加上
unix_socket参数,指向MAMP的mysql.sock绝对路径 - 确保账号密码是MAMP的默认
root/root(如果你改过密码要对应调整)
清除缓存让配置生效
执行命令清除Symfony缓存,确保新的数据库配置被加载:php bin/console cache:clear再次尝试数据库操作
现在再执行创建数据库的命令,应该就能成功了:php bin/console doctrine:database:create
如果还是不行,可以检查下MAMP的MySQL服务是不是正常启动了,或者确认你的项目有没有其他地方覆盖了数据库配置(比如config/packages/doctrine.yaml里的设置)。
内容的提问来源于stack exchange,提问作者user12296041

