我尝试使用 MySQL 中的 LOAD DATA LOCAL INFILE 语句,但收到错误消息“此 MySQL 版本不允许使用该命令”。
数据文件位于运行 MySql 的服务器本地。 我可以从 MySql Workbench(安装在同一台计算机上)运行相同的命令,并且工作正常。这表明服务器已设置为接受该命令,并且问题可能出在我的PHP PDO 客户端(同样,在同一台机器上)。
这是我创建 PDO 的代码:
function getDb() {
$dsn = 'mysql:host=localhost;dbname=my_db';
$username = 'username';
$password = 'password';
$options = [PDO::MYSQL_ATTR_LOCAL_INFILE => true];
return new PDO($dsn, $username, $password, $options);
}
如您所见,我在创建对象时设置PDO::MYSQL_ATTR_LOCAL_INFILE
。
这是sql命令:
LOAD DATA LOCAL INFILE '/media/working/my_file.psv'
INTO TABLE MY_TABLE
FIELDS TERMINATED BY '|'
IGNORE 1 LINES
有什么想法吗?
最佳答案
I can run the same command from MySql Workbench (installed on the same machine) and it works fine.
- 您确定服务器上只有一个 mysql 版本吗?
- 你确定吗 该脚本和您在控制台中使用相同的数据库用户 权利?
关于mysql - MySQL 和 LOAD DATA INFILE 导致 PDO 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964825/