FuelPHPのマイグレーションを実行しようとしたら、次のエラーが出て失敗したので、その時の対処法を残しておきます。
$ oil refine migrate caught exception Fuel\Core\Database_Exception: mysqli::mysqli(): (HY000/2002): そのようなファイルやディレクトリはありません
環境
vagrant上に環境構築 php : 5.6.25 fuelphp : 1.8 mysql : 5.6.33
対応
エラーメッセージで検索すると、mysql.sockがphp.iniに指定していないと起こる、とのことだったので、指定してみます。
php.iniの編集前(no valueになっている) $ php --ri mysqli mysqli.default_socket => no value => no value mysql.sockの場所を確認し、下のように編集 $ vim /home/vagrant/.phpenv/versions/5.6.25/etc/php.ini mysqli.default_socket = /var/lib/mysql/mysql.sock 改めて確認 $ php --ri mysqli mysqli.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock マイグレーションを実行 $ oil r migrate Performed migrations for app:default: 001_create_form
mysql.sockを指定してもダメな場合もあるようです、今回はうまくいったので良かったです。
他のハマりポイントとしては、fuel/app/config/db.php にてmysqliとPDOで記述が若干異なるため、間違えると上手く動かないようです。
# PDOの場合
return array(
'default' => array(
'type' => 'mysqli',
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev'
'username' => 'username',
'password' => 'password',
),
),
);
# mysqliの場合
return array(
'default' => array(
'type' => 'mysqli',
'connection' => array(
'hostname' => 'hostname',
'username' => 'username',
'password' => 'password',
),
),
);
参考にさせていただきました!