我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:
LOAD DATA INFILE "text.txt" INTO table mytable;
我得到了以下错误:
MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句
如何解决这个错误?
我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。
我使用的是MySQL 5.6
我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:
LOAD DATA INFILE "text.txt" INTO table mytable;
我得到了以下错误:
MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句
如何解决这个错误?
我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。
我使用的是MySQL 5.6
当前回答
这为我工作(有额外的问题,不能使用本地与我当前的MySQL版本在语句LOAD DATE INFILE…)
sudo /usr/local/mysql/support-files/mysql.server start --secure-file-priv='' --local-infile
上述方法适用于我的机器上的给定路径;你可能需要调整你的路线。
然后使用:
mysql -u root -p
重要的一点是,您应该在MySQL数据文件夹中有CSV。在我的机器中,它位于:/usr/local/mysql-8.0.18-macos10.14-x86_64/data
如果需要在数据文件夹中删除CSV,可以更改文件夹权限。
设置: macOS Catalina 10.15.5版本 MySQL 8.0.18版本
其他回答
我在“secure-file-priv”上也遇到了同样的问题。在.ini文件中注释不起作用,在'secure-file-priv'指定的目录中移动文件也不起作用。
最后,正如dbc建议的那样,使'secure-file-priv'等于一个空字符串就可以工作了。所以如果有人在尝试了上面的答案后被困住了,希望这样做会有所帮助。
我在windows 10上遇到了这个问题。为了解决这个问题,我做了以下工作。
在windows搜索(左下角)中,我输入了“powershell”。 右键单击powershell并以管理员身份运行。 导航到服务器bin文件。(C:\Program Files\MySQL\MySQL Server 5.6\bin); 键入。/ mysqld “输入”
服务器按预期启动。
如果文件是本地的,请在命令中使用local
LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;
下面是我在Windows 7中禁用secure-file-priv的方法(vhu回答的选项#2):
进入services.msc停止MySQL服务器服务。 转到C:\ProgramData\MySQL\MySQL Server 5.6 (ProgramData在我的例子中是一个隐藏文件夹)。 在记事本中打开my.ini文件。 搜索“secure-file-priv”。 通过在行首添加'#'来注释该行。对于MySQL Server 5.7.16及以上版本,注释将不起作用。你必须将它设置为一个空字符串,就像这样- secure-file-priv="" 保存文件。 进入services.msc启动MySQL服务器服务。
我在这里遇到了同样的问题,ERRORCODE 2。是的,大部分答案都有意义,但我尝试了最简单的方法:
我在文件路径中使用了双斜杠。
我的示例路径与整个查询>>尝试它,请让每个人都知道它是否为你工作。
LOAD DATA LOCAL INFILE "E:\Irfan OneDrive \OneDrive - Qtech\Documents\Suppliers\HB\Extended\HotelTransferZone.csv" INTO TABLE temp_hb_transfer 以'|'结尾的字段 可选包含' ' ' 以“\n”结尾的行