Posted at

LaravelでLOAD DATA LOCAL INFILEできない

More than 1 year has passed since last update.

LaravelでDB::statementを実行するとエラーが出るの続きのようなもの


事象

LaravelのDB::statementをつかってLOAD DATA LOCAL INFILEしようとすると、以下のようなエラーが出る

$ php artisan command:hogehoge

PDOStatement::execute(): LOAD DATA LOCAL INFILE forbidden (SQL: LOAD DATA CONCURRENT LOCAL INFILE ...


解決方法

これも設定漏れ

/usr/local/etc/my.cnfはMacの場合。

my.cnfの場所の確認は

$ mysql --help | grep my.cnf

とかでやってくださいー


/usr/local/etc/my.cnf

[server]

local_infile=true


config/database.php

        'mysql' => [

'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'options' => [
PDO::ATTR_EMULATE_PREPARES => true,
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
],
],