Mysql下有时候会出现mysql.sock位置错误,导致无法链接数据库。
这里介绍的无法连接数据库问题也是这个导致。
发生后的环境:yii2 执行 php artisan migrate
提示 SQLSTATE[HY000][2000] No such file or directory (如下图)
检查 mysql.sock 文件路径位置是否设置正确,执行下面命令:
ps aux |grep-i mysql
输出:
_mysql24020.01.22855160 103848??Ss9:17下午0:01.42 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid
仔细看输出,并没有mysql.sock文件的位置,先不用管,用另一个方法。
首先修改my.cnf
位置在/etc/my.cnf下,假如没有的话,去/usr/locate/mysql版本/my.cnf下修改,然后复制到/etc下。
编辑复制过来的my.cny
修改为如下:(没有[client]的话,自己添加~)
[client]
socket = /tmp/mysql.sock
[mysqld]
socket = /tmp/mysql.sock
然后修改php.ini(位置为/etc/php.ini)没有的话,copy一个php.ini.default
执行命令复制一个php.ini:sudo cp /private/etc/php.ini.default /private/etc/php.ini
修改里面的这三处:
pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
保存退出,然后再执行:php artisan migrate
成功了,如图:
网友评论