首页 > 解决方案 > 命令有什么问题?

问题描述

错误 1148 (42000):此 MySQL 版本不允许使用的命令。
执行加载数据查询时出现上述错误。我无法检测到查询中有什么问题。
请帮忙。谢谢。

创建表 SQL

DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (
    field1  char(8) NOT NULL,
    field2  varchar(10) NOT NULL,
    field3  varchar(4) NOT NULL,
    field4  varchar(100),
    field5  text,
    field6  char(8),
    field7  char(1)
) CHARACTER SET UTF8MB4;

加载表sql

load data local infile 'E:/insert/table1.RRF' into table table1 fields terminated by '|' lines terminated by '\r\n'
(@field1,@field2,@field2,@field4,@field5,@field6,@field7)
SET field1 = @field1,
field2 = @field2,
field2 = @field2,
field4 = NULLIF(@field4,''),
field5 = NULLIF(@field5,''),
field6 = NULLIF(@field6,''),
field7 = NULLIF(@field7,'');

编辑 1: MySQL 中 local_infile 的变量设置为 ON

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+

标签: mysql

解决方案


错误 1148 (42000):此 MySQL 版本不允许使用的命令。

一般来说,这意味着secure_file_priv服务器设置被禁用(设置为 NULL)或设置为某个明确的目录(不是空字符串)。

如果它被禁用,则LOAD DATA INFILE在启用此设置之前不可用(需要重新启动服务器)。

如果它设置为某个目录,则加载的文件必须强烈地存在于该目录中。

load data local infile 'E:/insert/table1.RRF'

如果E:是本地设备/卷则LOCAL没有意义。

LOCAL关键字的意思是“在加载之前将远程文件复制到本地临时文件夹” - 所以它只对远程文件有意义。

仅当secure_file_priv启用并设置为空字符串时才适用。


推荐阅读