一、大数据量插入报错:Loading local data is disabled; this must be enabled on both the client and server sides

1.1、问题原因

翻译:forLoading local data被禁用;这必须在客户端和服务器端都启用
我们的这种报错是属于mysql导入数据报错:local_infile服务器变量指示能否使用load data local infile命令。该变量为OFF时,禁用客户端的load data local infile命令,只要我们将该变量设置为ON时, 报错才会消失。

我们先输入show global variables like ‘local_infile’;命令来查看local_infile服务器的变量是off还是on,如下图所示,当前我们的服务器变量的变量值为off,因此我们导入数据时才会报错。

1.2、临时解决方案

设置变量:SET GLOBAL local_infile = 1;
查看变量:show global variables like 'local_infile';
mysql> show global variables like ‘local_infile’;
+———————-+———-+
| Variable_name | Value |
+———————-+———-+
| local_infile | ON |
+———————-+———-+
1 row in set (0.00 sec)

注意:导入文件没有问题,但是重启mysql服务,依然会提示以上错误

1.3、永久解决方案

就是在mysql服务启动时自动加载该配置,修改mysql配置文件

mysqld.cnf中的
[mysqld]
下添加
local_infile = 1
mysql.cnf中的
[mysql]
下添加
local_infile = 1
mysql服务重启
service mysql restart
命令行查看local_infile变量状态
mysql> SHOW GLOBAL VARIABLES LIKE ‘local_infile’;
+———————-+———-+
| Variable_name | Value |
+———————-+———-+
| local_infile | ON |
+———————-+———-+
1 row in set (0.00 sec)
说明配置成功
导入文件正常
local_infile服务器变量指示能否使用load data local infile命令。该变量默认为ON。
该变量为OFF时,禁用客户端的load data local infile命令。

1.4、如果使用的是SqlSugar

1.4.1、注意

这边需要注意一下,除了上面数据库设置开启,如果orm框架使用的是sqlsugar并且数据库是mysql,连接字符串后面需要加上AllowLoadLocalInfile=true

1.4.2、示例

MySQL连接字符串:Server=localhost;Port=3306;database=mes_madire;uid=root;pwd=123456;SslMode=None;Pooling=true;Max Pool Size=200;Allow User Variables=true;AllowLoadLocalInfile=true;

1.4.3、官网文档

image.png