繁体   English   中英

此MySQL版本不允许使用命令

[英]The used command is not allowed with this MySQL version

好吧,因此,在尝试了一周所有我发现的不同答案之后,我没有成功,我要提出一个问题。 这用于MySQL的LOAD DATA LOCAL INFILE。 关于此的文章很多,但是我仍然无法从Web浏览器上使它正常工作,但是能够从服务器上的mysql命令提示符下以相同的用户并通过连接到相同的数据库来运行它。 到目前为止我尝试过的

  1. MySQL 5.5版
  2. Ubuntu 12.04
  3. PHP版本5.3

在my.cnf local-infile=1中的mysqld,mysql,mysql- loose-local-infile=1客户端

重新启动MySQL Server。 此时,我可以从命令提示符处运行查询,而以前却没有。 我已经给出了从777访问中提取文件的目录。 我已经确认php.ini已启用本地文件参数。 我已经更新了apparmor。 实际查询:

LOAD DATA LOCAL INFILE '/var/www/ui/uploads/r_import.csv' INTO TABLE r_data FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (first_name,last_name,apt,user_id)

上面的查询从mysql命令开始,在与服务器的连接中没有特殊参数。

如果有人对此有任何想法,我将很乐于尝试任何事情。

<?php
include 'includes/header.php';
if($_FILES['file']['type'] != "application/vnd.ms-excel"){
   die("This is not a CSV file.");
}
elseif(is_uploaded_file($_FILES['file']['tmp_name'])){
    $filename = $_FILES['file']['tmp_name'];
    $name = $_FILES['file']['name'];
    copy( $filename, 'uploads/'.$name ) or die( "Could not copy file!");
    $file_to_import = '/var/www/ui/uploads/'.$name;
   $query = 'LOAD DATA LOCAL INFILE  \''.$file_to_import.'\' INTO TABLE r_data FIELDS TERMINATED BY  \',\' ENCLOSED BY  \'"\' LINES TERMINATED BY  \'\n\' IGNORE 1 ROWS (first_name,last_name,apt,user_id)';
   echo $query;
   $result = mysqli_query($link,$query) or die(mysqli_error($link));
}
else{
   die("You shouldn't be here");
}
?>
$link = mysqli_init();
mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, true);
mysqli_real_connect($link, 'localhost', $username, $password, $database);

数据库的连接字符串对我有用。 我在developerwjk提供的链接的最后一条评论中找到了它

您的问题是使用LOCAL关键字。 当您使用LOCAL ,服务器希望MySQL客户端读取文件并将其发送。 当客户端软件在远程计算机上运行时,或者在服务器本身上运行MySQL客户端时,这适用。 (这就是为什么您可以从服务器命令行运行查询的原因)。

如果您正在运行PHP,则不涉及任何客户端软件。 PHP直接对服务器进行调用,因此LOCAL关键字在此上下文中无效。

要从PHP使用LOAD DATA INFILE ,必须确保将文件放在MySQL服务器具有读取权限的服务器文件系统中的某个位置,并将该文件的完整路径作为查询的一部分传递。 不要使用LOCAL关键字。

如果您尝试从远程客户端加载文件,则需要先将文件上传到文件系统,然后执行查询。

请注意MySQL手册中的这一句话: 如果指定LOCAL,则文件将由客户端主机上的客户端程序读取并发送到服务器。

参考: http : //dev.mysql.com/doc/refman/5.5/en/load-data.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM