我正在学习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
当前回答
我将LOCAL添加到命令中,但它产生了另一个问题:
Loading local data is disabled - this must be enabled on both the client and server sides
为了解决这个问题,我在这里简单地执行了三个步骤
其他回答
@vhu我做了SHOW变量像“secure_file_priv”;它返回C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\所以当我插入它时,它仍然不工作。
当我直接打开my.ini文件时,我发现路径的格式有点不同:
C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
当我用它运行时,它工作了。唯一不同的是斜线的方向。
如果你在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';
这对我很管用。好运!
在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/
我用命令中的LOCAL选项解决了这个问题:
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;
你可以在这里找到更多信息。
上的客户端程序读取文件 客户端主机和发送到服务器。该文件可以作为一个完整的 路径名称,以指定其确切位置。如果给出一个相对路径 名称时,名称将相对于所在的目录进行解释 客户端程序启动。
我正在Debian上的MySQL5.7.11上工作,为我工作的命令是:
mysql> SELECT @@global.secure_file_priv;