我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:

LOAD DATA INFILE "text.txt" INTO table mytable;

我得到了以下错误:

MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句

如何解决这个错误?

我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。

我使用的是MySQL 5.6


当前回答

我在这里遇到了同样的问题,ERRORCODE 2。是的,大部分答案都有意义,但我尝试了最简单的方法:

我在文件路径中使用了双斜杠。

我的示例路径与整个查询>>尝试它,请让每个人都知道它是否为你工作。

LOAD DATA LOCAL INFILE "E:\Irfan OneDrive \OneDrive - Qtech\Documents\Suppliers\HB\Extended\HotelTransferZone.csv" INTO TABLE temp_hb_transfer 以'|'结尾的字段 可选包含' ' ' 以“\n”结尾的行

其他回答

我在这方面遇到了各种各样的问题。我在修改my。cnf和其他版本试图显示的各种疯狂的东西。

对我有用的是:

我得到的错误

MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句

我可以通过打开/usr/local/mysql/support-files/mysql来修复它。服务器,更改如下行:

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

to

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

我用命令中的LOCAL选项解决了这个问题:

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

你可以在这里找到更多信息。

上的客户端程序读取文件 客户端主机和发送到服务器。该文件可以作为一个完整的 路径名称,以指定其确切位置。如果给出一个相对路径 名称时,名称将相对于所在的目录进行解释 客户端程序启动。

我在这里遇到了同样的问题,ERRORCODE 2。是的,大部分答案都有意义,但我尝试了最简单的方法:

我在文件路径中使用了双斜杠。

我的示例路径与整个查询>>尝试它,请让每个人都知道它是否为你工作。

LOAD DATA LOCAL INFILE "E:\Irfan OneDrive \OneDrive - Qtech\Documents\Suppliers\HB\Extended\HotelTransferZone.csv" INTO TABLE temp_hb_transfer 以'|'结尾的字段 可选包含' ' ' 以“\n”结尾的行

MySQL使用这个系统变量来控制导入文件的位置

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+

所以问题是如何改变系统变量,如secure_file_priv。

关闭mysqld Sudo mysqld_safe——secure_file_priv=""

现在你可能会看到:

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+

在Ubuntu 14和Mysql 5.5.53上,这个设置默认是启用的。要禁用它,你需要在mysqld配置组下的my.cnf文件中添加secure-file-priv = ""。如:-

[mysqld]
secure-file-priv = ""