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

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

我得到了以下错误:

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

如何解决这个错误?

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

我使用的是MySQL 5.6


当前回答

我在windows 10上遇到了这个问题。为了解决这个问题,我做了以下工作。

在windows搜索(左下角)中,我输入了“powershell”。 右键单击powershell并以管理员身份运行。 导航到服务器bin文件。(C:\Program Files\MySQL\MySQL Server 5.6\bin); 键入。/ mysqld “输入”

服务器按预期启动。

其他回答

如果你在Ubuntu上运行,你可能还需要配置Apparmor以允许MySQL写入到你的文件夹,例如,以下是我的配置:

将这一行添加到文件/etc/ apparor .d/usr.sbin中。mysqld:

/var/lib/mysql-files/* rw

然后在/etc/mysql/my.cnf部分添加以下两行配置:

[client]
loose-local-infile = 1

[mysqld]
secure-file-priv = ""

下面是我的SQL语句:

select id from blahs into outfile '/var/lib/mysql-files/blahs';

这对我很管用。好运!

我在“secure-file-priv”上也遇到了同样的问题。在.ini文件中注释不起作用,在'secure-file-priv'指定的目录中移动文件也不起作用。

最后,正如dbc建议的那样,使'secure-file-priv'等于一个空字符串就可以工作了。所以如果有人在尝试了上面的答案后被困住了,希望这样做会有所帮助。

@vhu我做了SHOW变量像“secure_file_priv”;它返回C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\所以当我插入它时,它仍然不工作。

当我直接打开my.ini文件时,我发现路径的格式有点不同:

C:/ProgramData/MySQL/MySQL Server 8.0/Uploads

当我用它运行时,它工作了。唯一不同的是斜线的方向。

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

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

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

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

我在windows 10上遇到了这个问题。为了解决这个问题,我做了以下工作。

在windows搜索(左下角)中,我输入了“powershell”。 右键单击powershell并以管理员身份运行。 导航到服务器bin文件。(C:\Program Files\MySQL\MySQL Server 5.6\bin); 键入。/ mysqld “输入”

服务器按预期启动。