読者です 読者をやめる 読者になる 読者になる

pirosikick's diary

君のハートにunshift

OS X 10.8.2 MySQL PHP PDOでエラーが出る

fuelのmigrateで下記エラーが出る

$ oil refine migrate
Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/hanai/work/hoge/fuel/core/classes/database/pdo/connection.php on 89

デフォルトのphp.iniが/var/mysql/mysql.sockを見に行くような設定になっているのが原因。homebrewでmysqlをインストールした場合だと/tmp/mysql.sockなのでそっちを見るように変更する。

$ diff -u /etc/php.ini.default /etc/php.ini

--- /etc/php.ini.default	2012-07-26 23:49:20.000000000 +0900
+++ /etc/php.ini	2012-12-07 01:13:46.000000000 +0900
@@ -1074,7 +1074,8 @@
 ; Default socket name for local MySQL connects.  If empty, uses the built-in
 ; MySQL defaults.
 ; http://php.net/pdo_mysql.default-socket
-pdo_mysql.default_socket=/var/mysql/mysql.sock
+;pdo_mysql.default_socket=/var/mysql/mysql.sock
+pdo_mysql.default_socket=/tmp/mysql.sock
 
 [Phar]
 ; http://php.net/phar.readonly
@@ -1228,7 +1229,8 @@
 ; Default socket name for local MySQL connects.  If empty, uses the built-in
 ; MySQL defaults.
 ; http://php.net/mysql.default-socket
-mysql.default_socket = /var/mysql/mysql.sock
+;mysql.default_socket = /var/mysql/mysql.sock
+mysql.default_socket = /tmp/mysql.sock
 
 ; Default host for mysql_connect() (doesn't apply in safe mode).
 ; http://php.net/mysql.default-host
@@ -1287,7 +1289,8 @@
 ; Default socket name for local MySQL connects.  If empty, uses the built-in
 ; MySQL defaults.
 ; http://php.net/mysqli.default-socket
-mysqli.default_socket = /var/mysql/mysql.sock
+;mysqli.default_socket = /var/mysql/mysql.sock
+mysqli.default_socket = /tmp/mysql.sock
 
 ; Default host for mysql_connect() (doesn't apply in safe mode).
 ; http://php.net/mysqli.default-host