我正在学习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
当前回答
我在windows 10上遇到了这个问题。为了解决这个问题,我做了以下工作。
在windows搜索(左下角)中,我输入了“powershell”。 右键单击powershell并以管理员身份运行。 导航到服务器bin文件。(C:\Program Files\MySQL\MySQL Server 5.6\bin); 键入。/ mysqld “输入”
服务器按预期启动。
其他回答
它正在按预期工作。你的MySQL服务器已经启动了——secure-file-priv选项,该选项限制你可以使用load DATA INFILE从哪个目录加载文件。
使用SHOW VARIABLES LIKE "secure_file_priv";查看已配置的目录。
你有两个选择:
将文件移动到secure-file-priv指定的目录。 禁用secure-file-priv。必须从启动时删除,并且不能动态修改。要做到这一点,请检查MySQL启动参数(取决于平台)和my.ini。
我正在Debian上的MySQL5.7.11上工作,为我工作的命令是:
mysql> SELECT @@global.secure_file_priv;
在ubuntu 20.04中: 执行如下命令在系统中找到my.cnf:
commandlocate my.cnf
现在:编辑这个文件
sudo vim /etc/mysql/my.cnf
最后增加如下一行:
[mysqld]
secure-file-priv = ""
现在您可以导入文件,此错误将被删除。 或者你可以使用Mysql工作台文件导入: 链接:https://blog.skyvia.com/how-to-import-csv-file-into-mysql-table-in-4-different-ways/
对我有用的是:
Put your file inside of the folder specified in secure-file-priv. To find that type: mysql> show variables like "secure_file_priv"; Check if you have local_infile = 1. Do that typing: mysql> show variables like "local_infile"; If you get: +---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+ Then set it to one typing: mysql> set global local_infile = 1; Specify the full path for your file. In my case: mysql> load data infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/file.txt" into table test;
如果文件是本地的,请在命令中使用local
LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;