我在执行以下查询时遇到问题:
$csv = $path . $filename;
$query = sprintf("LOAD DATA local INFILE '%s' INTO TABLE users FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''"' ESCAPED BY ''"' LINES TERMINATED BY '''n' IGNORE 1 LINES (`firstname`, `lastname`, `username`, `gender`, `email`, `country`, `ethnicity`, `education` )", addslashes($csv));
return DB::connection()->getpdo()->exec($query);
它在Localhost中运行良好。当我在服务器上尝试时,出现了以下错误:
{"error":{"type":"PDOException","message":"SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version","file":"'/var'/www'/vhosts'/xxxxxxxx.com'/httpdocs'/xxxxxxxx.com'/app'/controllers'/UsersController.php","line":224}}
我更改了my.cnf
文件中local-infile=1
的值。尽管如此,还是出现了同样的错误。
可能是什么问题?
您可能必须在my.cnf文件和php-PDO中启用此功能。
[mysqld]
local-infile
[mysql]
local-infile
而且。。。
<?php
$pdo = new PDO($dsn, $user, $password,
array(PDO::MYSQL_ATTR_LOCAL_INFILE => true)
);