Mac下xampp环境中yii2的migrate命令报错 [ 2.0 版本 ]
MacBook-Pro:yii_advanced$ php yii migrate
Yii Migration Tool (based on Yii v2.0.4)
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [2002] No such file or directory'
in /Applications/XAMPP/xamppfiles/htdocs/yii_advanced/vendor/yiisoft/yii2/db/Connection.php:534
请问出现这种异常是因为啥呢?
最佳答案
-
nbacubafbi 发布于 2015-06-25 15:22 举报
看了这么多答案,发现就没有一个靠谱的,告诉你们两个靠谱的方式吧。
- 快速解决方法;把Yii根目录下的/common/config/mail-local.php 文件中的localhost改成127.0.0.1
- 根本问题解决方法;windows不会出现这种问题,mac容易出现这种问题,是因为mac里面本来就有一个PHP了,如果还用XAMPP的话,这个时候就有两个PHP,但如果不经过配置,命令行方式的PHP默认执行的是系统自带的,所以要修改默认执行的PHP
修改方法: 找到Yii根目录下的/yii文件打开,
第一行#!/usr/bin/env php 改成 #!/usr/bin/env /Applications/XAMPP/xamppfiles/bin/php然后重启服务器再试试:)
共 3 条回复mingzhanghui 回复于 2017-05-28 22:23 回复我的就是这个原因, 装了2个版本的PHP在不同的路径造成的。
其他 8 个回答
-
错误原因应该是:php找的对应的mysql.sock路径错了,mysql启动时候会创建一个mysql.sock,这个文件会有一个路径,建议检查下php对应的路径是否正确。
共 3 条回复我查看phpinfo:
pdo_mysql.default_socket对应的是/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
mysql.default_socket对应的也是/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock$ sudo find / -name mysql.sock /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory
是这个吗?还是另外再创建的mysql.sock?
问题确实是出在mysql.sock上
如果你是用的XAMPP环境的话,请尝试使用以下命令:sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock
如果是自己安装的mysql:
1.启动mysql,使用
sudo find / -name mysql.sock
来查看你的mysql.sock创建在哪里,Mac环境下的mysql.sock是在
/tmp/mysql.sock
2.修改php.ini
pdo_mysql.default_socket=/tmp/mysql.sock #将之前find到的mysql.sock目录添加至此。
注意在XAMPP环境下,
pdo_mysql.default_socket=/var/mysql/mysql.sock #将之前ln -s的mysql.sock目录添加至此。
最后别忘重启Apache或者nginx服务器
-
算了,都别猜了,把phpinfo关于mysql configure pdo等主要模块的图截上来,再讨论吧,这么猜,谁能猜得到,又不是华佗
共 7 条回复@phpxiebin 哦,那就查看下mysql运行的状态啊
@╃巡洋艦㊣ @phpxiebin @lxepoo @胖纸囧
xampp下sqlstate hy000 2002
我用这里的方法试了一下,不报之前的错误了,但又报别的错误了!果断放弃XAMPP@phpxiebin 改过之后没好,又报新的错误了 !
-
我在解决时,用了一整天的时间,一开始以为是mysql,后来以为是php的问题
编译重装几次,最后发现是这个问题,但是解决方法还需要其他步骤。
感谢以下这位的博客:
http://www.iamlintao.com/5026.html
其实就是mac自带php,我们自己安装的PHP反而无法被系统env找出来。
修改方法: 找到Yii根目录下的/yii文件打开,
第一行#!/usr/bin/env php 改成 #!/usr/bin/env /(...你自己安装的php目录...)/bin同时,解决时,要注意:还不是更改一句这么简单。
需要在终端输入:env
立马可以看到目前的PATH默认值
你可以看见,你自己安装的目录,肯定不在优先,而mac系统自带的php所在的目录反而在优先。所以,你应当更改path的设置文件。
可以参考: http://www.th7.cn/system/mac/201409/70274.shtml
在我的机器中,是 /etc/bashrc 里边设置的,需要把PATH的第一个遍历目录改成你自己的目录。
还有:
(1)OSX10.11系统增强了权限,sudo也无法修改
先执行 sudo chmod 755 /etc/bashrc
然后 sudo vi /etc/bashrc
(2)修改后:source /etc/bashrc
(3)把终端exit退出,然后重新进去,输入env,你会发现PATH常量已经将你的PHP安装目录变为第一优先。
然后进入yii的主目录,输入./yii migrate
一切OK!!!!
我不是我
最后登录:2015-10-23
在线时长:12小时31分
- 粉丝8
- 金钱310
- 威望10
- 积分530