LOAD DATA LOCAL INFILE默认情况下未启用。通常,它应该通过放置来local-infile=1启用my.cnf。但它不适用于所有安装。根据我的经验,它适用于 Debian 7,但不适用于 Debian 7 minimum,尽管两个安装都来自同一个预编译的 deb 包。两者都在 OpenVZ VPS 上。
LOAD DATA LOCAL INFILE
local-infile=1
my.cnf
如何调试为什么local-infile=1对安装不起作用,以及如何安全激活LOAD DATA LOCAL INFILE?
如果 MySQL Debian-7 minimum 无法使用local_infile,请查看所有用于编译的 make 文件,看看它是否默认禁用或是否local_infile为 Debian-7 启用。
local_infile
在花时间之前,请运行以下命令:
SHOW GLOBAL VARIABLES LIKE 'local_infile'; SET GLOBAL local_infile = 'ON'; SHOW GLOBAL VARIABLES LIKE 'local_infile';
它应该回显以下内容:
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+ 1 row in set (0.00 sec) mysql> SET GLOBAL local_infile = 'ON'; Query OK, 0 rows affected (0.06 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | ON | +---------------+-------+ 1 row in set (0.00 sec) mysql>
如果它仍然'OFF'显示 ,请深入查看编译器设置以启用它。
'OFF'
如果它设置为'ON',您就可以了。
'ON'
请注意我没有说
SET GLOBAL local_infile = 1;
我说用
SET GLOBAL local_infile = 'ON';
选项 local_infile 是布尔值,而不是数字。
如果将其设置为my.cnf
[mysqld] local_infile=ON
并且重新启动 mysql 也不起作用,您必须使用以下内容启动 mysql:
echo "SET GLOBAL local_infile = 'ON';" > /var/lib/mysql/init_file.sql chown mysql:mysql /var/lib/mysql/init_file.sql service mysql stop service mysql start --init-file=/var/lib/mysql/init_file.sql rm -f /var/lib/mysql/init_file.sql
或者也许将其添加到my.cnf
[mysqld] init-file=/var/lib/mysql/init_file.sql
然后重启mysql。
在 Windows 上默认安装 MySQL 8.0.20:
查找位于 的初始化文件C:\ProgramData\MySQL\MySQL Server 8.0\my.ini。 my.ini使用文本编辑器打开文件。 在 CLIENT 部分和SERVER 部分[client]下查找 headers 。[mysql][mysqld] 在每个标题下添加以下语句:
local_infile=ON
保存文件并在Windows本地服务下重启MySQL80服务。