我正在尝试使用 LOAD DATA INFILE
将一些记录插入到表中。不幸的是,它不起作用。
这里有一些细节
如果我使用这条指令:
LOAD DATA INFILE 'file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);
它使用 MySQL 客户端程序和 PHP 应用程序工作。这样,它将在我的 MySQL 安装的数据目录中查找该文件。
现在如果我尝试使用 LOCAL
选项执行指令,它只在我使用 mysql 客户端时有效,而不是从 PHP:
LOAD DATA LOCAL INFILE 'path/to/file/file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);
再次......它适用于 MySQL 客户端,但不适用于 PHP 应用程序......我收到此错误:
LOAD DATA LOCAL INFILE forbidden in /path/to/my/application
我读到这个问题与PHP的编译和使用mysqlnd有关。我正在使用 PHP 5.3.8 和 MySQL 5.5.15,但我还没有找到解决方案。
附加信息:到目前为止,我找到的唯一帮助是 open PHP bug :
最佳答案
查看文档 http://php.net/manual/en/ref.pdo-mysql.php .
基本上你需要:
PDO::MYSQL_ATTR_LOCAL_INFILE => true
在实例化时设置。
示例:
$conn = new \PDO("mysql:host=$server;dbname=$database;", "$user", "$password", array(
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
));
关于php - LOAD DATA LOCAL INFILE 在... PHP 中被禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638090/